gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] gawk branch, gawk-5.2-stable, updated. gawk-4.1.0-4933-g0d9727bc


From: Arnold Robbins
Subject: [SCM] gawk branch, gawk-5.2-stable, updated. gawk-4.1.0-4933-g0d9727bc
Date: Sun, 23 Oct 2022 07:57:29 -0400 (EDT)

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  0d9727bcd312da8555ca59942790adfee5fcafea (commit)
      from  e5eb1da0433a827dbca1e0e35ab1629234ea97aa (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=0d9727bcd312da8555ca59942790adfee5fcafea

commit 0d9727bcd312da8555ca59942790adfee5fcafea
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Sun Oct 23 14:57:02 2022 +0300

    Squashed commit of the following:
    
    commit 79ae97ddb8193e1b239703d103892497f3a467fc
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Sun Oct 23 14:36:57 2022 +0300
    
        Manual updates.
    
    commit 67bd0bd0c8cdc03e7adfcc987d042477a4487c5e
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Sun Oct 23 14:32:37 2022 +0300
    
        Update ChangeLogs.
    
    commit c5d2da0b5ddd9bed85c27a68ffbe8290740c5ad6
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Sun Oct 23 14:29:08 2022 +0300
    
        Doc updates.
    
    commit 5736dd06fd6830a2fc07d18459024a03eeb90fda
    Merge: 4dc118c4 e5eb1da0
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Sun Oct 23 14:28:47 2022 +0300
    
        Merge branch 'gawk-5.2-stable' into feature/m1-pma
    
    commit 4dc118c46554003b64365114fb07ab1e2a90b2b3
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Sun Oct 23 14:22:31 2022 +0300
    
        Simplify macos stuff in m4/pma.m4.
    
    commit 76a602a0034b506e59aa6819c8d89912a05b0a32
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Fri Oct 21 13:47:23 2022 +0300
    
        Another fix.
    
    commit 8c76dbf27619f450f35153b116ff045235a7690f
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Fri Oct 21 13:44:16 2022 +0300
    
        Fix in extension/configure.ac
    
    commit a3652d3a3de4b4a8e2aa2cdc124725d7264189c3
    Author: Arnold D. Robbins <arnold@skeeve.com>
    Date:   Fri Oct 21 13:24:27 2022 +0300
    
        Compile gawk as Intel exe on Apple M1.

diff --git a/ChangeLog b/ChangeLog
index bbc4f053..17051d2b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2022-10-23         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * NEW: Updated.
+
 2022-10-23         Arnold D. Robbins     <arnold@skeeve.com>
 
        * awkgram.y (mk_binary): Check that divisor is a number before
diff --git a/NEWS b/NEWS
index 7936d218..dd43fbfe 100644
--- a/NEWS
+++ b/NEWS
@@ -19,8 +19,7 @@ Changes from 5.2.0 to 5.2.1
 4. The rwarray extension's readall() function has had some bugs fixed.
 
 5. The PMA allocator is now supported on FreeBSD, OpenBSD and Linux on S/390x.
-   It is currently disabled on macOS on M1 since there are some unsolved
-   problems in that environment. macOS on Intel works without problem.
+   Is is now supported also on both Intel and M1 macOS systems.
 
 6. There have been several minor code cleanups and bug fixes. See the
    ChangeLog for details.
diff --git a/README_d/ChangeLog b/README_d/ChangeLog
index d9d4cc90..55c44689 100644
--- a/README_d/ChangeLog
+++ b/README_d/ChangeLog
@@ -1,3 +1,7 @@
+2022-10-23         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * README.macosx: Updated.
+
 2022-09-04         Arnold D. Robbins     <arnold@skeeve.com>
 
        * 5.2.0: Release tar ball made.
diff --git a/README_d/README.macosx b/README_d/README.macosx
index b46f0128..741cf4da 100644
--- a/README_d/README.macosx
+++ b/README_d/README.macosx
@@ -1,3 +1,19 @@
+Sun 23 Oct 2022 14:24:37 IDT
+============================
+
+In order to use the new persistent memory feature, it's (currently) necessary
+to build gawk as a non-PIE (Position Independent Executable) binary. That
+is possible on Intel macOS systems, but not on Apple M1 systems. Such
+binaries are simply disallowed.
+
+*However*, M1 systems have x86_64 emulation capability, in order to be
+able to run old macOS binaries.  Thus, an Intel non-PIE executable works
+just fine on M1 systems. For that reason, on M1, we actually build an
+Intel binary, and everything "just works"! Woo hoo!
+
+This is a true hack. At some point it will probably stop working, but
+I'll worry about that when it happens.
+
 Fri Feb 23 10:38:05 IST 2018
 ============================
 
diff --git a/configure b/configure
index 59241a8e..64552707 100755
--- a/configure
+++ b/configure
@@ -12618,18 +12618,14 @@ fi
 
                        ;;
                *darwin*)
-                       # 30 September 2022: PMA works on Intel but not
-                       # on M1, disable it, until it gets fixed
-                       case $host in
-                       x86_64-*)
-                               LDFLAGS="${LDFLAGS} -Xlinker -no_pie"
-                               export LDFLAGS
-                               ;;
-                       *)
-                               # aarch64-*
-                               use_persistent_malloc=no
-                               ;;
-                       esac
+                       # 23 October 2022: See README_d/README.macosx for
+                       # the details on what's happening here. See also
+                       # the manual.
+
+                       # Compile as Intel binary all the time, even on M1.
+                       CFLAGS="${CFLAGS} -arch x86_64"
+                       LDFLAGS="${LDFLAGS} -Xlinker -no_pie"
+                       export CFLAGS LDFLAGS
                        ;;
                *cygwin* | *CYGWIN* | *solaris2.11* | freebsd13.* | openbsd7.* )
                        true    # nothing do, exes on these systems are not PIE
diff --git a/doc/ChangeLog b/doc/ChangeLog
index a968e867..4bbe45ca 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2022-10-23         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * gawktexi.in (Persistent Memory): Document that both Intel and
+       M1 systems are now supported for macOS.
+
 2022-10-15         Arnold D. Robbins     <arnold@skeeve.com>
 
        * texinfo.tex: Updated from GNULIB.
diff --git a/doc/gawk.info b/doc/gawk.info
index f54ae7ad..43c62d68 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -22170,9 +22170,9 @@ 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, Intel-based 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
+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.
@@ -22310,9 +22310,8 @@ If it becomes burdensome,(2) then the feature will be 
removed.
 
    ---------- Footnotes ----------
 
-   (1) As of this writing, the PMA allocator does not work on Apple M1
-systems, and therefore its use is disabled by 'configure'.  We hope that
-this will eventually be fixed.
+   (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
 differences in behavior from when 'gawk' is run normally.
@@ -39634,246 +39633,246 @@ Ref: Two-way I/O-Footnote-2885001
 Node: TCP/IP Networking885083
 Node: Profiling888159
 Node: Persistent Memory897465
-Ref: Persistent Memory-Footnote-1905626
-Ref: Persistent Memory-Footnote-2905802
-Node: Extension Philosophy905929
-Node: Advanced Features Summary907416
-Node: Internationalization909588
-Node: I18N and L10N911262
-Node: Explaining gettext911949
-Ref: Explaining gettext-Footnote-1917841
-Ref: Explaining gettext-Footnote-2918026
-Node: Programmer i18n918191
-Ref: Programmer i18n-Footnote-1923140
-Node: Translator i18n923189
-Node: String Extraction923983
-Ref: String Extraction-Footnote-1925115
-Node: Printf Ordering925201
-Ref: Printf Ordering-Footnote-1927987
-Node: I18N Portability928051
-Ref: I18N Portability-Footnote-1930507
-Node: I18N Example930570
-Ref: I18N Example-Footnote-1933845
-Ref: I18N Example-Footnote-2933918
-Node: Gawk I18N934027
-Node: I18N Summary934649
-Node: Debugger935990
-Node: Debugging936990
-Node: Debugging Concepts937431
-Node: Debugging Terms939240
-Node: Awk Debugging941815
-Ref: Awk Debugging-Footnote-1942760
-Node: Sample Debugging Session942892
-Node: Debugger Invocation943426
-Node: Finding The Bug944812
-Node: List of Debugger Commands951286
-Node: Breakpoint Control952619
-Node: Debugger Execution Control956313
-Node: Viewing And Changing Data959675
-Node: Execution Stack963216
-Node: Debugger Info964853
-Node: Miscellaneous Debugger Commands968924
-Node: Readline Support973986
-Node: Limitations974882
-Node: Debugging Summary977436
-Node: Namespaces978715
-Node: Global Namespace979826
-Node: Qualified Names981224
-Node: Default Namespace982223
-Node: Changing The Namespace982964
-Node: Naming Rules984578
-Node: Internal Name Management986426
-Node: Namespace Example987468
-Node: Namespace And Features990030
-Node: Namespace Summary991465
-Node: Arbitrary Precision Arithmetic992942
-Node: Computer Arithmetic994429
-Ref: table-numeric-ranges998195
-Ref: table-floating-point-ranges998689
-Ref: Computer Arithmetic-Footnote-1999348
-Node: Math Definitions999405
-Ref: table-ieee-formats1002381
-Node: MPFR features1002949
-Node: MPFR On Parole1003394
-Ref: MPFR On Parole-Footnote-11004223
-Node: MPFR Intro1004378
-Node: FP Math Caution1006029
-Ref: FP Math Caution-Footnote-11007101
-Node: Inexactness of computations1007470
-Node: Inexact representation1008501
-Node: Comparing FP Values1009861
-Node: Errors accumulate1011102
-Node: Strange values1012558
-Ref: Strange values-Footnote-11015146
-Node: Getting Accuracy1015251
-Node: Try To Round1017961
-Node: Setting precision1018860
-Ref: table-predefined-precision-strings1019557
-Node: Setting the rounding mode1021388
-Ref: table-gawk-rounding-modes1021762
-Ref: Setting the rounding mode-Footnote-11025694
-Node: Arbitrary Precision Integers1025873
-Ref: Arbitrary Precision Integers-Footnote-11029048
-Node: Checking for MPFR1029197
-Node: POSIX Floating Point Problems1030671
-Ref: POSIX Floating Point Problems-Footnote-11035324
-Node: Floating point summary1035362
-Node: Dynamic Extensions1037552
-Node: Extension Intro1039105
-Node: Plugin License1040371
-Node: Extension Mechanism Outline1041168
-Ref: figure-load-extension1041607
-Ref: figure-register-new-function1043173
-Ref: figure-call-new-function1044266
-Node: Extension API Description1046329
-Node: Extension API Functions Introduction1048042
-Ref: table-api-std-headers1049878
-Node: General Data Types1054128
-Ref: General Data Types-Footnote-11062834
-Node: Memory Allocation Functions1063133
-Ref: Memory Allocation Functions-Footnote-11067634
-Node: Constructor Functions1067733
-Node: API Ownership of MPFR and GMP Values1071386
-Node: Registration Functions1072919
-Node: Extension Functions1073619
-Node: Exit Callback Functions1078941
-Node: Extension Version String1080191
-Node: Input Parsers1080854
-Node: Output Wrappers1093575
-Node: Two-way processors1098087
-Node: Printing Messages1100352
-Ref: Printing Messages-Footnote-11101523
-Node: Updating ERRNO1101676
-Node: Requesting Values1102415
-Ref: table-value-types-returned1103152
-Node: Accessing Parameters1104261
-Node: Symbol Table Access1105498
-Node: Symbol table by name1106010
-Ref: Symbol table by name-Footnote-11109035
-Node: Symbol table by cookie1109163
-Ref: Symbol table by cookie-Footnote-11113348
-Node: Cached values1113412
-Ref: Cached values-Footnote-11116948
-Node: Array Manipulation1117101
-Ref: Array Manipulation-Footnote-11118192
-Node: Array Data Types1118229
-Ref: Array Data Types-Footnote-11120887
-Node: Array Functions1120979
-Node: Flattening Arrays1125764
-Node: Creating Arrays1132740
-Node: Redirection API1137507
-Node: Extension API Variables1140340
-Node: Extension Versioning1141051
-Ref: gawk-api-version1141480
-Node: Extension GMP/MPFR Versioning1143212
-Node: Extension API Informational Variables1144840
-Node: Extension API Boilerplate1145913
-Node: Changes from API V11149887
-Node: Finding Extensions1151459
-Node: Extension Example1152018
-Node: Internal File Description1152816
-Node: Internal File Ops1156896
-Ref: Internal File Ops-Footnote-11168246
-Node: Using Internal File Ops1168386
-Ref: Using Internal File Ops-Footnote-11170769
-Node: Extension Samples1171043
-Node: Extension Sample File Functions1172572
-Node: Extension Sample Fnmatch1180221
-Node: Extension Sample Fork1181708
-Node: Extension Sample Inplace1182926
-Node: Extension Sample Ord1186552
-Node: Extension Sample Readdir1187388
-Ref: table-readdir-file-types1188277
-Node: Extension Sample Revout1189345
-Node: Extension Sample Rev2way1189934
-Node: Extension Sample Read write array1190674
-Node: Extension Sample Readfile1193860
-Node: Extension Sample Time1194955
-Node: Extension Sample API Tests1196707
-Node: gawkextlib1197199
-Node: Extension summary1200117
-Node: Extension Exercises1203819
-Node: Language History1205061
-Node: V7/SVR3.11206717
-Node: SVR41208869
-Node: POSIX1210303
-Node: BTL1211684
-Node: POSIX/GNU1212413
-Node: Feature History1218338
-Node: Common Extensions1236077
-Node: Ranges and Locales1237360
-Ref: Ranges and Locales-Footnote-11241976
-Ref: Ranges and Locales-Footnote-21242003
-Ref: Ranges and Locales-Footnote-31242238
-Node: Contributors1242461
-Node: History summary1248458
-Node: Installation1249838
-Node: Gawk Distribution1250782
-Node: Getting1251266
-Node: Extracting1252229
-Node: Distribution contents1253867
-Node: Unix Installation1261373
-Node: Quick Installation1262177
-Node: Compiling with MPFR1264597
-Node: Shell Startup Files1265287
-Node: Additional Configuration Options1266376
-Node: Configuration Philosophy1268691
-Node: Compiling from Git1271087
-Node: Building the Documentation1271642
-Node: Non-Unix Installation1273026
-Node: PC Installation1273486
-Node: PC Binary Installation1274327
-Node: PC Compiling1275200
-Node: PC Using1276306
-Node: Cygwin1279802
-Node: MSYS1281026
-Node: VMS Installation1281628
-Node: VMS Compilation1282347
-Ref: VMS Compilation-Footnote-11283754
-Node: VMS Dynamic Extensions1283812
-Ref: VMS Dynamic Extensions-Footnote-11285536
-Node: VMS Installation Details1285626
-Node: VMS Running1287888
-Node: VMS GNV1292167
-Node: Bugs1292881
-Node: Bug definition1293793
-Node: Bug address1297295
-Node: Usenet1300814
-Node: Performance bugs1302003
-Node: Asking for help1304924
-Node: Maintainers1306891
-Node: Other Versions1307898
-Node: Installation summary1316168
-Node: Notes1317525
-Node: Compatibility Mode1318319
-Node: Additions1319101
-Node: Accessing The Source1320026
-Node: Adding Code1321463
-Node: New Ports1328278
-Node: Derived Files1332653
-Ref: Derived Files-Footnote-11338312
-Ref: Derived Files-Footnote-21338347
-Ref: Derived Files-Footnote-31338942
-Node: Future Extensions1339056
-Node: Implementation Limitations1339714
-Node: Extension Design1340924
-Node: Old Extension Problems1342068
-Ref: Old Extension Problems-Footnote-11343586
-Node: Extension New Mechanism Goals1343643
-Ref: Extension New Mechanism Goals-Footnote-11347007
-Node: Extension Other Design Decisions1347196
-Node: Extension Future Growth1349309
-Node: Notes summary1349915
-Node: Basic Concepts1351073
-Node: Basic High Level1351754
-Ref: figure-general-flow1352036
-Ref: figure-process-flow1352722
-Ref: Basic High Level-Footnote-11356024
-Node: Basic Data Typing1356209
-Node: Glossary1359537
-Node: Copying1391424
-Node: GNU Free Documentation License1428967
-Node: Index1454087
+Ref: Persistent Memory-Footnote-1905613
+Ref: Persistent Memory-Footnote-2905752
+Node: Extension Philosophy905879
+Node: Advanced Features Summary907366
+Node: Internationalization909538
+Node: I18N and L10N911212
+Node: Explaining gettext911899
+Ref: Explaining gettext-Footnote-1917791
+Ref: Explaining gettext-Footnote-2917976
+Node: Programmer i18n918141
+Ref: Programmer i18n-Footnote-1923090
+Node: Translator i18n923139
+Node: String Extraction923933
+Ref: String Extraction-Footnote-1925065
+Node: Printf Ordering925151
+Ref: Printf Ordering-Footnote-1927937
+Node: I18N Portability928001
+Ref: I18N Portability-Footnote-1930457
+Node: I18N Example930520
+Ref: I18N Example-Footnote-1933795
+Ref: I18N Example-Footnote-2933868
+Node: Gawk I18N933977
+Node: I18N Summary934599
+Node: Debugger935940
+Node: Debugging936940
+Node: Debugging Concepts937381
+Node: Debugging Terms939190
+Node: Awk Debugging941765
+Ref: Awk Debugging-Footnote-1942710
+Node: Sample Debugging Session942842
+Node: Debugger Invocation943376
+Node: Finding The Bug944762
+Node: List of Debugger Commands951236
+Node: Breakpoint Control952569
+Node: Debugger Execution Control956263
+Node: Viewing And Changing Data959625
+Node: Execution Stack963166
+Node: Debugger Info964803
+Node: Miscellaneous Debugger Commands968874
+Node: Readline Support973936
+Node: Limitations974832
+Node: Debugging Summary977386
+Node: Namespaces978665
+Node: Global Namespace979776
+Node: Qualified Names981174
+Node: Default Namespace982173
+Node: Changing The Namespace982914
+Node: Naming Rules984528
+Node: Internal Name Management986376
+Node: Namespace Example987418
+Node: Namespace And Features989980
+Node: Namespace Summary991415
+Node: Arbitrary Precision Arithmetic992892
+Node: Computer Arithmetic994379
+Ref: table-numeric-ranges998145
+Ref: table-floating-point-ranges998639
+Ref: Computer Arithmetic-Footnote-1999298
+Node: Math Definitions999355
+Ref: table-ieee-formats1002331
+Node: MPFR features1002899
+Node: MPFR On Parole1003344
+Ref: MPFR On Parole-Footnote-11004173
+Node: MPFR Intro1004328
+Node: FP Math Caution1005979
+Ref: FP Math Caution-Footnote-11007051
+Node: Inexactness of computations1007420
+Node: Inexact representation1008451
+Node: Comparing FP Values1009811
+Node: Errors accumulate1011052
+Node: Strange values1012508
+Ref: Strange values-Footnote-11015096
+Node: Getting Accuracy1015201
+Node: Try To Round1017911
+Node: Setting precision1018810
+Ref: table-predefined-precision-strings1019507
+Node: Setting the rounding mode1021338
+Ref: table-gawk-rounding-modes1021712
+Ref: Setting the rounding mode-Footnote-11025644
+Node: Arbitrary Precision Integers1025823
+Ref: Arbitrary Precision Integers-Footnote-11028998
+Node: Checking for MPFR1029147
+Node: POSIX Floating Point Problems1030621
+Ref: POSIX Floating Point Problems-Footnote-11035274
+Node: Floating point summary1035312
+Node: Dynamic Extensions1037502
+Node: Extension Intro1039055
+Node: Plugin License1040321
+Node: Extension Mechanism Outline1041118
+Ref: figure-load-extension1041557
+Ref: figure-register-new-function1043123
+Ref: figure-call-new-function1044216
+Node: Extension API Description1046279
+Node: Extension API Functions Introduction1047992
+Ref: table-api-std-headers1049828
+Node: General Data Types1054078
+Ref: General Data Types-Footnote-11062784
+Node: Memory Allocation Functions1063083
+Ref: Memory Allocation Functions-Footnote-11067584
+Node: Constructor Functions1067683
+Node: API Ownership of MPFR and GMP Values1071336
+Node: Registration Functions1072869
+Node: Extension Functions1073569
+Node: Exit Callback Functions1078891
+Node: Extension Version String1080141
+Node: Input Parsers1080804
+Node: Output Wrappers1093525
+Node: Two-way processors1098037
+Node: Printing Messages1100302
+Ref: Printing Messages-Footnote-11101473
+Node: Updating ERRNO1101626
+Node: Requesting Values1102365
+Ref: table-value-types-returned1103102
+Node: Accessing Parameters1104211
+Node: Symbol Table Access1105448
+Node: Symbol table by name1105960
+Ref: Symbol table by name-Footnote-11108985
+Node: Symbol table by cookie1109113
+Ref: Symbol table by cookie-Footnote-11113298
+Node: Cached values1113362
+Ref: Cached values-Footnote-11116898
+Node: Array Manipulation1117051
+Ref: Array Manipulation-Footnote-11118142
+Node: Array Data Types1118179
+Ref: Array Data Types-Footnote-11120837
+Node: Array Functions1120929
+Node: Flattening Arrays1125714
+Node: Creating Arrays1132690
+Node: Redirection API1137457
+Node: Extension API Variables1140290
+Node: Extension Versioning1141001
+Ref: gawk-api-version1141430
+Node: Extension GMP/MPFR Versioning1143162
+Node: Extension API Informational Variables1144790
+Node: Extension API Boilerplate1145863
+Node: Changes from API V11149837
+Node: Finding Extensions1151409
+Node: Extension Example1151968
+Node: Internal File Description1152766
+Node: Internal File Ops1156846
+Ref: Internal File Ops-Footnote-11168196
+Node: Using Internal File Ops1168336
+Ref: Using Internal File Ops-Footnote-11170719
+Node: Extension Samples1170993
+Node: Extension Sample File Functions1172522
+Node: Extension Sample Fnmatch1180171
+Node: Extension Sample Fork1181658
+Node: Extension Sample Inplace1182876
+Node: Extension Sample Ord1186502
+Node: Extension Sample Readdir1187338
+Ref: table-readdir-file-types1188227
+Node: Extension Sample Revout1189295
+Node: Extension Sample Rev2way1189884
+Node: Extension Sample Read write array1190624
+Node: Extension Sample Readfile1193810
+Node: Extension Sample Time1194905
+Node: Extension Sample API Tests1196657
+Node: gawkextlib1197149
+Node: Extension summary1200067
+Node: Extension Exercises1203769
+Node: Language History1205011
+Node: V7/SVR3.11206667
+Node: SVR41208819
+Node: POSIX1210253
+Node: BTL1211634
+Node: POSIX/GNU1212363
+Node: Feature History1218288
+Node: Common Extensions1236027
+Node: Ranges and Locales1237310
+Ref: Ranges and Locales-Footnote-11241926
+Ref: Ranges and Locales-Footnote-21241953
+Ref: Ranges and Locales-Footnote-31242188
+Node: Contributors1242411
+Node: History summary1248408
+Node: Installation1249788
+Node: Gawk Distribution1250732
+Node: Getting1251216
+Node: Extracting1252179
+Node: Distribution contents1253817
+Node: Unix Installation1261323
+Node: Quick Installation1262127
+Node: Compiling with MPFR1264547
+Node: Shell Startup Files1265237
+Node: Additional Configuration Options1266326
+Node: Configuration Philosophy1268641
+Node: Compiling from Git1271037
+Node: Building the Documentation1271592
+Node: Non-Unix Installation1272976
+Node: PC Installation1273436
+Node: PC Binary Installation1274277
+Node: PC Compiling1275150
+Node: PC Using1276256
+Node: Cygwin1279752
+Node: MSYS1280976
+Node: VMS Installation1281578
+Node: VMS Compilation1282297
+Ref: VMS Compilation-Footnote-11283704
+Node: VMS Dynamic Extensions1283762
+Ref: VMS Dynamic Extensions-Footnote-11285486
+Node: VMS Installation Details1285576
+Node: VMS Running1287838
+Node: VMS GNV1292117
+Node: Bugs1292831
+Node: Bug definition1293743
+Node: Bug address1297245
+Node: Usenet1300764
+Node: Performance bugs1301953
+Node: Asking for help1304874
+Node: Maintainers1306841
+Node: Other Versions1307848
+Node: Installation summary1316118
+Node: Notes1317475
+Node: Compatibility Mode1318269
+Node: Additions1319051
+Node: Accessing The Source1319976
+Node: Adding Code1321413
+Node: New Ports1328228
+Node: Derived Files1332603
+Ref: Derived Files-Footnote-11338262
+Ref: Derived Files-Footnote-21338297
+Ref: Derived Files-Footnote-31338892
+Node: Future Extensions1339006
+Node: Implementation Limitations1339664
+Node: Extension Design1340874
+Node: Old Extension Problems1342018
+Ref: Old Extension Problems-Footnote-11343536
+Node: Extension New Mechanism Goals1343593
+Ref: Extension New Mechanism Goals-Footnote-11346957
+Node: Extension Other Design Decisions1347146
+Node: Extension Future Growth1349259
+Node: Notes summary1349865
+Node: Basic Concepts1351023
+Node: Basic High Level1351704
+Ref: figure-general-flow1351986
+Ref: figure-process-flow1352672
+Ref: Basic High Level-Footnote-11355974
+Node: Basic Data Typing1356159
+Node: Glossary1359487
+Node: Copying1391374
+Node: GNU Free Documentation License1428917
+Node: Index1454037
 
 End Tag Table
 
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 6fc495fe..3a1b7452 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -31075,10 +31075,9 @@ 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, Intel-based macOS systems,@footnote{As of this writing,
-the PMA allocator does not work on Apple M1 systems, and therefore its
-use is disabled by @command{configure}. We hope that this will
-eventually be fixed.}
+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.}
 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
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 47b1b17b..ecb45f67 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -29957,10 +29957,9 @@ 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, Intel-based macOS systems,@footnote{As of this writing,
-the PMA allocator does not work on Apple M1 systems, and therefore its
-use is disabled by @command{configure}. We hope that this will
-eventually be fixed.}
+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.}
 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
diff --git a/extension/ChangeLog b/extension/ChangeLog
index 259a0c75..ffbda59e 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -1,3 +1,8 @@
+2022-10-23         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * configure.ac: Add handling of persistent malloc stuff. This is
+       for dealing with M1 macOS.
+
 2022-10-14         Andrew J. Schorr      <aschorr@telemetry-investments.com>
 
        * rwarray.c (array_handle_t): Removed.
diff --git a/extension/Makefile.in b/extension/Makefile.in
index d77b7345..7cf10cee 100644
--- a/extension/Makefile.in
+++ b/extension/Makefile.in
@@ -115,6 +115,7 @@ host_triplet = @host@
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/../m4/arch.m4 \
+       $(top_srcdir)/../m4/ax_check_compile_flag.m4 \
        $(top_srcdir)/../m4/codeset.m4 $(top_srcdir)/../m4/dirfd.m4 \
        $(top_srcdir)/../m4/gettext.m4 \
        $(top_srcdir)/../m4/host-cpu-c-abi.m4 \
@@ -127,8 +128,8 @@ am__aclocal_m4_deps = $(top_srcdir)/../m4/arch.m4 \
        $(top_srcdir)/../m4/ltsugar.m4 \
        $(top_srcdir)/../m4/ltversion.m4 \
        $(top_srcdir)/../m4/lt~obsolete.m4 $(top_srcdir)/../m4/mpfr.m4 \
-       $(top_srcdir)/../m4/nls.m4 $(top_srcdir)/../m4/po.m4 \
-       $(top_srcdir)/../m4/progtest.m4 \
+       $(top_srcdir)/../m4/nls.m4 $(top_srcdir)/../m4/pma.m4 \
+       $(top_srcdir)/../m4/po.m4 $(top_srcdir)/../m4/progtest.m4 \
        $(top_srcdir)/../m4/triplet-transformation.m4 \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
diff --git a/extension/aclocal.m4 b/extension/aclocal.m4
index cad81851..7e4bafd9 100644
--- a/extension/aclocal.m4
+++ b/extension/aclocal.m4
@@ -1209,6 +1209,7 @@ AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
 
 m4_include([../m4/arch.m4])
+m4_include([../m4/ax_check_compile_flag.m4])
 m4_include([../m4/codeset.m4])
 m4_include([../m4/dirfd.m4])
 m4_include([../m4/gettext.m4])
@@ -1226,6 +1227,7 @@ m4_include([../m4/ltversion.m4])
 m4_include([../m4/lt~obsolete.m4])
 m4_include([../m4/mpfr.m4])
 m4_include([../m4/nls.m4])
+m4_include([../m4/pma.m4])
 m4_include([../m4/po.m4])
 m4_include([../m4/progtest.m4])
 m4_include([../m4/triplet-transformation.m4])
diff --git a/extension/configh.in b/extension/configh.in
index c0e0e2c8..f732c3b2 100644
--- a/extension/configh.in
+++ b/extension/configh.in
@@ -177,11 +177,17 @@
 /* Define to the version of this package. */
 #undef PACKAGE_VERSION
 
+/* The size of `void *', as computed by sizeof. */
+#undef SIZEOF_VOID_P
+
 /* Define to 1 if all of the C90 standard headers exist (not just the ones
    required in a freestanding environment). This macro is provided for
    backward compatibility; new code need not use it. */
 #undef STDC_HEADERS
 
+/* Define to 1 if we can use the pma allocator */
+#undef USE_PERSISTENT_MALLOC
+
 /* Enable extensions on AIX 3, Interix.  */
 #ifndef _ALL_SOURCE
 # undef _ALL_SOURCE
diff --git a/extension/configure b/extension/configure
index 84a04c27..a87f23b1 100755
--- a/extension/configure
+++ b/extension/configure
@@ -684,6 +684,8 @@ LIBTOOL
 OBJDUMP
 DLLTOOL
 AS
+USE_PERSISTENT_MALLOC_FALSE
+USE_PERSISTENT_MALLOC_TRUE
 ac_ct_AR
 AR
 POSUB
@@ -805,6 +807,7 @@ ac_subst_files=''
 ac_user_opts='
 enable_option_checking
 enable_silent_rules
+enable_pma
 enable_dependency_tracking
 enable_mpfr
 enable_nls
@@ -1461,6 +1464,8 @@ Optional Features:
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-silent-rules   less verbose build output (undo: "make V=1")
   --disable-silent-rules  verbose build output (undo: "make V=0")
+  --disable-pma           do not build gawk with the persistent memory
+                          allocator
   --enable-dependency-tracking
                           do not reject slow dependency extractors
   --disable-dependency-tracking
@@ -1848,6 +1853,195 @@ printf "%s\n" "$ac_res" >&6; }
 
 } # ac_fn_c_check_member
 
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main (void)
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main (void)
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_hi=$ac_mid; break
+else $as_nop
+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+  done
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main (void)
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main (void)
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_lo=$ac_mid; break
+else $as_nop
+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+  done
+else $as_nop
+  ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main (void)
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_hi=$ac_mid
+else $as_nop
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+static long int longval (void) { return $2; }
+static unsigned long int ulongval (void) { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main (void)
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (($2) < 0)
+    {
+      long int i = longval ();
+      if (i != ($2))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ($2))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else $as_nop
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+  fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
+
 # ac_fn_c_check_func LINENO FUNC VAR
 # ----------------------------------
 # Tests whether FUNC exists, setting the cache variable VAR accordingly
@@ -3368,6 +3562,18 @@ END
 fi
 
 
+SKIP_PERSIST_MALLOC=no
+# Check whether --enable-pma was given.
+if test ${enable_pma+y}
+then :
+  enableval=$enable_pma; if test "$enableval" = no
+       then
+               SKIP_PERSIST_MALLOC=yes
+       fi
+
+fi
+
+
 
 
   # Make sure we can run config.sub.
@@ -8493,6 +8699,185 @@ rm -rf conftest*
   fi
 fi
 
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler 
accepts " >&5
+printf %s "checking whether C compiler accepts ... " >&6; }
+if test ${ax_cv_check_cflags__+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+
+  ax_check_save_flags=$CFLAGS
+  CFLAGS="$CFLAGS  "
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ax_cv_check_cflags__=yes
+else $as_nop
+  ax_cv_check_cflags__=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+  CFLAGS=$ax_check_save_flags
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__" 
>&5
+printf "%s\n" "$ax_cv_check_cflags__" >&6; }
+if test "x$ax_cv_check_cflags__" = xyes
+then :
+  :
+else $as_nop
+  :
+fi
+
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5
+printf %s "checking size of void *... " >&6; }
+if test ${ac_cv_sizeof_void_p+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" 
"ac_cv_sizeof_void_p"        "$ac_includes_default"
+then :
+
+else $as_nop
+  if test "$ac_cv_type_void_p" = yes; then
+     { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (void *)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_void_p=0
+   fi
+fi
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5
+printf "%s\n" "$ac_cv_sizeof_void_p" >&6; }
+
+
+
+printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
+
+
+use_persistent_malloc=no
+if test "$SKIP_PERSIST_MALLOC" = no && test $ac_cv_sizeof_void_p -eq 8
+then
+       ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
+if test "x$ac_cv_func_mmap" = xyes
+then :
+
+fi
+
+       ac_fn_c_check_func "$LINENO" "munmap" "ac_cv_func_munmap"
+if test "x$ac_cv_func_munmap" = xyes
+then :
+
+fi
+
+       if test $ac_cv_func_mmap = yes && test $ac_cv_func_munmap = yes
+       then
+               use_persistent_malloc=yes
+               case $host_os in
+               linux-*)
+                       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking 
whether C compiler accepts -no-pie" >&5
+printf %s "checking whether C compiler accepts -no-pie... " >&6; }
+if test ${ax_cv_check_cflags___no_pie+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+
+  ax_check_save_flags=$CFLAGS
+  CFLAGS="$CFLAGS  -no-pie"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ax_cv_check_cflags___no_pie=yes
+else $as_nop
+  ax_cv_check_cflags___no_pie=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+  CFLAGS=$ax_check_save_flags
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: 
$ax_cv_check_cflags___no_pie" >&5
+printf "%s\n" "$ax_cv_check_cflags___no_pie" >&6; }
+if test "x$ax_cv_check_cflags___no_pie" = xyes
+then :
+  LDFLAGS="${LDFLAGS} -no-pie"
+                               export LDFLAGS
+else $as_nop
+  :
+fi
+
+                       ;;
+               *darwin*)
+                       # 23 October 2022: See README_d/README.macosx for
+                       # the details on what's happening here. See also
+                       # the manual.
+
+                       # Compile as Intel binary all the time, even on M1.
+                       CFLAGS="${CFLAGS} -arch x86_64"
+                       LDFLAGS="${LDFLAGS} -Xlinker -no_pie"
+                       export CFLAGS LDFLAGS
+                       ;;
+               *cygwin* | *CYGWIN* | *solaris2.11* | freebsd13.* | openbsd7.* )
+                       true    # nothing do, exes on these systems are not PIE
+                       ;;
+               # Other OS's go here...
+               *)
+                       # For now, play it safe
+                       use_persistent_malloc=no
+
+                       # Allow override for testing on new systems
+                       if test "$REALLY_USE_PERSIST_MALLOC" != ""
+                       then
+                               use_persistent_malloc=yes
+                       fi
+                       ;;
+               esac
+       else
+               use_persistent_malloc=no
+       fi
+fi
+
+ if test "$use_persistent_malloc" = "yes"; then
+  USE_PERSISTENT_MALLOC_TRUE=
+  USE_PERSISTENT_MALLOC_FALSE='#'
+else
+  USE_PERSISTENT_MALLOC_TRUE='#'
+  USE_PERSISTENT_MALLOC_FALSE=
+fi
+
+
+if test "$use_persistent_malloc" = "yes"
+then
+
+printf "%s\n" "#define USE_PERSISTENT_MALLOC 1" >>confdefs.h
+
+fi
+
 case `pwd` in
   *\ * | *\    *)
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not 
cope well with whitespace in \`pwd\`" >&5
@@ -17554,6 +17939,10 @@ if test -z "${am__fastdepCC_TRUE}" && test -z 
"${am__fastdepCC_FALSE}"; then
   as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${USE_PERSISTENT_MALLOC_TRUE}" && test -z 
"${USE_PERSISTENT_MALLOC_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PERSISTENT_MALLOC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 
 : "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
diff --git a/extension/configure.ac b/extension/configure.ac
index b7c04512..f45565ef 100644
--- a/extension/configure.ac
+++ b/extension/configure.ac
@@ -32,6 +32,15 @@ AC_CONFIG_AUX_DIR([../build-aux])
 
 AM_INIT_AUTOMAKE([1.16 -Wall -Werror])
 
+SKIP_PERSIST_MALLOC=no
+AC_ARG_ENABLE([pma],
+       [AS_HELP_STRING([--disable-pma],[do not build gawk with the persistent 
memory allocator])],
+       if test "$enableval" = no
+       then
+               SKIP_PERSIST_MALLOC=yes
+       fi
+)
+
 GAWK_CANONICAL_HOST
 AC_USE_SYSTEM_EXTENSIONS
 AC_ZOS_USS
@@ -64,6 +73,7 @@ AC_CHECK_MEMBERS([struct stat.st_blksize])
 
 AM_PROG_AR
 AC_SYS_LARGEFILE
+GAWK_USE_PERSISTENT_MALLOC
 LT_INIT([win32-dll disable-static])
 dnl AC_PROG_INSTALL
 
diff --git a/m4/ChangeLog b/m4/ChangeLog
index 6a7f944b..dbd129ec 100644
--- a/m4/ChangeLog
+++ b/m4/ChangeLog
@@ -1,3 +1,7 @@
+2022-10-23         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * pma.m4: On all macOS, build an Intel binary, even on M1.
+
 2022-09-30         Arnold D. Robbins     <arnold@skeeve.com>
 
        * pma.m4: Disable pma on M1 mac. It doesn't work there. We hope
diff --git a/m4/pma.m4 b/m4/pma.m4
index 080713e1..00f29722 100644
--- a/m4/pma.m4
+++ b/m4/pma.m4
@@ -24,18 +24,14 @@ then
                                export LDFLAGS])
                        ;;
                *darwin*)
-                       # 30 September 2022: PMA works on Intel but not
-                       # on M1, disable it, until it gets fixed
-                       case $host in
-                       x86_64-*)
-                               LDFLAGS="${LDFLAGS} -Xlinker -no_pie"
-                               export LDFLAGS
-                               ;;
-                       *)
-                               # aarch64-*
-                               use_persistent_malloc=no
-                               ;;
-                       esac
+                       # 23 October 2022: See README_d/README.macosx for
+                       # the details on what's happening here. See also
+                       # the manual.
+
+                       # Compile as Intel binary all the time, even on M1.
+                       CFLAGS="${CFLAGS} -arch x86_64"
+                       LDFLAGS="${LDFLAGS} -Xlinker -no_pie"
+                       export CFLAGS LDFLAGS
                        ;;
                *cygwin* | *CYGWIN* | *solaris2.11* | freebsd13.* | openbsd7.* )
                        true    # nothing do, exes on these systems are not PIE

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog              |   4 +
 NEWS                   |   3 +-
 README_d/ChangeLog     |   4 +
 README_d/README.macosx |  16 ++
 configure              |  20 +-
 doc/ChangeLog          |   5 +
 doc/gawk.info          | 491 ++++++++++++++++++++++++-------------------------
 doc/gawk.texi          |   7 +-
 doc/gawktexi.in        |   7 +-
 extension/ChangeLog    |   5 +
 extension/Makefile.in  |   5 +-
 extension/aclocal.m4   |   2 +
 extension/configh.in   |   6 +
 extension/configure    | 389 +++++++++++++++++++++++++++++++++++++++
 extension/configure.ac |  10 +
 m4/ChangeLog           |   4 +
 m4/pma.m4              |  20 +-
 17 files changed, 716 insertions(+), 282 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]