From 5fe563bed8c9031c686d2d45559ef2ecf4a9357e Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Wed, 26 Jun 2024 11:45:26 -0500 Subject: [PATCH 1/6] Limit _FORTIFY_SOURCE <= 2 --- configure/Makefile | 4 ++++ configure/toolchain.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/configure/Makefile b/configure/Makefile index ba77d5089..3c2c0b53a 100644 --- a/configure/Makefile +++ b/configure/Makefile @@ -34,5 +34,9 @@ CFG += TOOLCHAIN.$(EPICS_HOST_ARCH).$(T_A) include $(TOP)/configure/RULES +ifeq ($(GNU),YES) + # Pass compiler flags to preprocessor to enable _FORTIFY_SOURCE + TOOLCHAIN.$(EPICS_HOST_ARCH).$(T_A): CPPFLAGS += $(CFLAGS) +endif TOOLCHAIN.$(EPICS_HOST_ARCH).$(T_A): toolchain.c $(PREPROCESS.cpp) diff --git a/configure/toolchain.c b/configure/toolchain.c index da4e8bb2c..79333198c 100644 --- a/configure/toolchain.c +++ b/configure/toolchain.c @@ -47,3 +47,8 @@ COMMANDLINE_LIBRARY ?= EPICS #else COMMANDLINE_LIBRARY ?= $(strip $(if $(wildcard $(if $(GNU_DIR),$(GNU_DIR)/include/readline/readline.h)), READLINE, EPICS)) #endif + +#if defined(_FORTIFY_SOURCE) && _FORTIFY_SOURCE>2 +OP_SYS_CPPFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 +#endif + From 5af9c7e50da82e1a34faea3ac172a059b8a8ebf0 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Sat, 8 Jun 2024 21:51:13 -0500 Subject: [PATCH 2/6] Revert submodules to versions at R7.0.8 --- modules/normativeTypes | 2 +- modules/pvAccess | 2 +- modules/pvData | 2 +- modules/pvDatabase | 2 +- modules/pva2pva | 2 +- modules/pvaClient | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/normativeTypes b/modules/normativeTypes index 7a2d264f2..1250a3c23 160000 --- a/modules/normativeTypes +++ b/modules/normativeTypes @@ -1 +1 @@ -Subproject commit 7a2d264f2cb107bfd10adb23bc2b73d8323a79e4 +Subproject commit 1250a3c236f0aa92e0b5bd73647fd71d8a09360d diff --git a/modules/pvAccess b/modules/pvAccess index 7746ea3c6..96061ca1c 160000 --- a/modules/pvAccess +++ b/modules/pvAccess @@ -1 +1 @@ -Subproject commit 7746ea3c6c366f7bf3a949613a77c9e4c7f7f2dd +Subproject commit 96061ca1cc6d0e101b0033635396a8e6b6add68c diff --git a/modules/pvData b/modules/pvData index 7300e6b0b..0ef8a3617 160000 --- a/modules/pvData +++ b/modules/pvData @@ -1 +1 @@ -Subproject commit 7300e6b0bd560c0ea2355c64ea3a88c259f90fe2 +Subproject commit 0ef8a361721bc4972743a9c9a0112f441ba36b0f diff --git a/modules/pvDatabase b/modules/pvDatabase index d18e0c913..e4cb8d239 160000 --- a/modules/pvDatabase +++ b/modules/pvDatabase @@ -1 +1 @@ -Subproject commit d18e0c913a8d5a8d42cbf2d5ec28ffd362897809 +Subproject commit e4cb8d23973723d8d943bd86bc0213da2bd53eff diff --git a/modules/pva2pva b/modules/pva2pva index 949b3f63c..3a08da445 160000 --- a/modules/pva2pva +++ b/modules/pva2pva @@ -1 +1 @@ -Subproject commit 949b3f63c2387bb92c1c22ca2f80f8d320805117 +Subproject commit 3a08da445b46e2e7029406d24425cdd3dfd7da24 diff --git a/modules/pvaClient b/modules/pvaClient index 8ed07fef9..a34876e36 160000 --- a/modules/pvaClient +++ b/modules/pvaClient @@ -1 +1 @@ -Subproject commit 8ed07fef96e41d35d47ab61276e29eb1a81e7fec +Subproject commit a34876e36a56c9de9b172d6a83a9439bb330783d From d0d15ee911107be091dbdaa340281d72d021a6b7 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Sat, 8 Jun 2024 21:58:12 -0500 Subject: [PATCH 3/6] Replace UNRELEASED with 7.0.8.1 --- modules/database/src/ioc/dbStatic/dbBase.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/database/src/ioc/dbStatic/dbBase.h b/modules/database/src/ioc/dbStatic/dbBase.h index f0a954b50..9578d1fac 100644 --- a/modules/database/src/ioc/dbStatic/dbBase.h +++ b/modules/database/src/ioc/dbStatic/dbBase.h @@ -119,7 +119,7 @@ typedef struct dbRecordNode { ELLLIST infoList; /*LIST head of info nodes*/ int flags; /** Parse order of this record() - * @since UNRELEASED + * @since 7.0.8.1 */ unsigned order; struct dbRecordNode *aliasedRecnode; /* NULL unless flags|DBRN_FLAGS_ISALIAS */ @@ -189,7 +189,7 @@ typedef struct dbBase { short ignoreMissingMenus; short loadCdefs; /** Total number of records. - * @since UNRELEASED + * @since 7.0.8.1 */ unsigned no_records; }dbBase; From 785b777baf859c48026c415ced3bbd46aec17f99 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Sat, 8 Jun 2024 22:30:01 -0500 Subject: [PATCH 4/6] Update Release Notes, set version numbers --- configure/CONFIG_BASE_VERSION | 2 +- configure/CONFIG_CA_VERSION | 2 +- configure/CONFIG_DATABASE_VERSION | 2 +- configure/CONFIG_LIBCOM_VERSION | 2 +- documentation/RELEASE_NOTES.md | 42 +++++++++++++++++++++++++++-- documentation/ReleaseChecklist.html | 14 +++++----- 6 files changed, 51 insertions(+), 13 deletions(-) diff --git a/configure/CONFIG_BASE_VERSION b/configure/CONFIG_BASE_VERSION index 7972433a1..78e75be79 100644 --- a/configure/CONFIG_BASE_VERSION +++ b/configure/CONFIG_BASE_VERSION @@ -56,7 +56,7 @@ EPICS_PATCH_LEVEL = 1 # Immediately after an official release the EPICS_PATCH_LEVEL is incremented # and the -DEV suffix is added (similar to the Maven -SNAPSHOT versions) -EPICS_DEV_SNAPSHOT=-DEV +EPICS_DEV_SNAPSHOT= # No changes should be needed below here diff --git a/configure/CONFIG_CA_VERSION b/configure/CONFIG_CA_VERSION index 2cff78816..54d24a22b 100644 --- a/configure/CONFIG_CA_VERSION +++ b/configure/CONFIG_CA_VERSION @@ -6,7 +6,7 @@ EPICS_CA_MAINTENANCE_VERSION = 4 # Development flag, set to zero for release versions -EPICS_CA_DEVELOPMENT_FLAG = 1 +EPICS_CA_DEVELOPMENT_FLAG = 0 # Immediately after a release the MAINTENANCE_VERSION # will be incremented and the DEVELOPMENT_FLAG set to 1 diff --git a/configure/CONFIG_DATABASE_VERSION b/configure/CONFIG_DATABASE_VERSION index 8815d2d1e..8ee2abff6 100644 --- a/configure/CONFIG_DATABASE_VERSION +++ b/configure/CONFIG_DATABASE_VERSION @@ -6,7 +6,7 @@ EPICS_DATABASE_MAINTENANCE_VERSION = 1 # Development flag, set to zero for release versions -EPICS_DATABASE_DEVELOPMENT_FLAG = 1 +EPICS_DATABASE_DEVELOPMENT_FLAG = 0 # Immediately after a release the MAINTENANCE_VERSION # will be incremented and the DEVELOPMENT_FLAG set to 1 diff --git a/configure/CONFIG_LIBCOM_VERSION b/configure/CONFIG_LIBCOM_VERSION index 4aab82a17..8be90d9c8 100644 --- a/configure/CONFIG_LIBCOM_VERSION +++ b/configure/CONFIG_LIBCOM_VERSION @@ -6,7 +6,7 @@ EPICS_LIBCOM_MAINTENANCE_VERSION = 1 # Development flag, set to zero for release versions -EPICS_LIBCOM_DEVELOPMENT_FLAG = 1 +EPICS_LIBCOM_DEVELOPMENT_FLAG = 0 # Immediately after a release the MAINTENANCE_VERSION # will be incremented and the DEVELOPMENT_FLAG set to 1 diff --git a/documentation/RELEASE_NOTES.md b/documentation/RELEASE_NOTES.md index c66a44c66..8cad1a544 100644 --- a/documentation/RELEASE_NOTES.md +++ b/documentation/RELEASE_NOTES.md @@ -18,9 +18,20 @@ should also be read to understand what has changed since earlier releases: - [pva2pva](https://epics-base.github.io/pva2pva/release_notes.html) - [pvaClient](https://github.com/epics-base/pvaClientCPP/blob/master/documentation/RELEASE_NOTES.md) -**This version of EPICS has not been released yet.** +## EPICS Release 7.0.8.1 -## Changes made on the 7.0 branch since 7.0.8 +### Limit to `_FORTIFY_SOURCE=2` + +GCC versions 12 and beyond and glibc have added some aggressive runtime +checks for buffer overflows in libc functions at runtime, and the +[Ubuntu 2024.04](https://wiki.ubuntu.com/ToolChain/CompilerFlags) release +increased their default gcc fortification level from 2 to 3. +This has started causing EPICS Base builds to fail on that version, and +other OS releases may make that configuration change with similar results. +This release detects a compiler configured with `_FORTIFY_SOURCE=3` and +overrides it to 2. +Later releases of Base will adjust the code, providing information to the +compiler to avoid triggering these incorrect protections. ### Fix issue with compress record @@ -28,6 +39,33 @@ In Base 7.0.8, an update to the compress record was added to allow for certain algorithms to use partially filled buffers in their computations. Unfortunately, this broke the behaviour of the records in certain cases. This has been fixed. +### Various minor changes + +These included fixing minor memory leaks and documentation corrections. The +`SIZV` field of lsi, lso and printf record VAL fields now can't exceed 32767 +characters, to match an internal limit. + +### `epicsSocketAccept()` now returns `SOCKET`, not `int` + +This might have some effect on downstream modules still using `int`, but the +OS-specific osdSock.h headers which osiSock.h includes have all declared +`SOCKET` (in most casese as a typedef for `int`) for many releases. +This change removes a compiler warning on WIN32. +Further details and the discussion about this change can be found +[here](https://github.com/epics-base/epics-base/pull/458). + +### `dbLoadRecords` allows macros with default values + +Previously the parser assumed that files containing macro substitutions were +bad if no macro definitions were provided; that assumption was made incorrect +once macro substitutions were allowed to provide a default value. + +### Hostname length limit in CA removed + +Before this release, the CA client library only handled hostnames in address +list environment variables up to 255 characters long. +This limit has been removed. + ----- ## EPICS Release 7.0.8 diff --git a/documentation/ReleaseChecklist.html b/documentation/ReleaseChecklist.html index 0db98a818..77fe6c7a9 100644 --- a/documentation/ReleaseChecklist.html +++ b/documentation/ReleaseChecklist.html @@ -198,7 +198,7 @@ everything that has to be done since it's so easy to miss steps.

  • Tag the module:
    - git tag -m 'ANJ: Tag for EPICS 7.0.8' <module-version> + git tag -m 'ANJ: Tag for EPICS 7.0.8.1' <module-version>
  • @@ -269,7 +269,7 @@ everything that has to be done since it's so easy to miss steps.

    Tag the epics-base module in Git:
    cd base-7.0
    - git tag -m 'ANJ: Tagged for release' R7.0.8 + git tag -m 'ANJ: Tagged for release' R7.0.8.1

    Don't push to GitHub yet.

    @@ -303,12 +303,12 @@ everything that has to be done since it's so easy to miss steps.

    files and directories that are only used for continuous integration:
    cd base-7.0
    - ./.tools/make-tar.sh R7.0.8 ../base-7.0.8.tar.gz base-7.0.8/ + ./.tools/make-tar.sh R7.0.8.1 ../base-7.0.8.1.tar.gz base-7.0.8.1/
    Create a GPG signature file of the tarfile as follows:
    cd ..
    - gpg --armor --sign --detach-sig base-7.0.8.tar.gz + gpg --armor --sign --detach-sig base-7.0.8.1.tar.gz
    @@ -374,7 +374,7 @@ everything that has to be done since it's so easy to miss steps.

    Upload the tar file and its .asc signature file to the epics-controls web-server.
    - scp base-7.0.8.tar.gz base-7.0.8.tar.gz.asc epics-controls:download/base
    + scp base-7.0.8.1.tar.gz base-7.0.8.1.tar.gz.asc epics-controls:download/base
    @@ -397,8 +397,8 @@ everything that has to be done since it's so easy to miss steps.

    Release Manager Go to the GitHub - - Create release from tag R7.0.8 page. + + Create release from tag R7.0.8.1 page. Upload the tar file and its .asc signature file to the new GitHub release page. From 57c930fbee53b3ca8ab4e8b5461c54f1518f9676 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Sat, 8 Jun 2024 22:34:41 -0500 Subject: [PATCH 5/6] Release R7.0.8.1 From 615e7e99ce3ca6ff8f067fe6b648e677ea37a6ff Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Sat, 8 Jun 2024 23:05:39 -0500 Subject: [PATCH 6/6] Update version numbers and submodules after release --- configure/CONFIG_BASE_VERSION | 4 ++-- configure/CONFIG_CA_VERSION | 4 ++-- configure/CONFIG_DATABASE_VERSION | 4 ++-- configure/CONFIG_LIBCOM_VERSION | 4 ++-- documentation/RELEASE_NOTES.md | 7 +++++++ modules/normativeTypes | 2 +- modules/pvAccess | 2 +- modules/pvData | 2 +- modules/pvDatabase | 2 +- modules/pva2pva | 2 +- modules/pvaClient | 2 +- 11 files changed, 21 insertions(+), 14 deletions(-) diff --git a/configure/CONFIG_BASE_VERSION b/configure/CONFIG_BASE_VERSION index 78e75be79..e48336bf8 100644 --- a/configure/CONFIG_BASE_VERSION +++ b/configure/CONFIG_BASE_VERSION @@ -52,11 +52,11 @@ EPICS_MODIFICATION = 8 # EPICS_PATCH_LEVEL must be a number (win32 resource file requirement) # Not included in the official EPICS version number if zero -EPICS_PATCH_LEVEL = 1 +EPICS_PATCH_LEVEL = 2 # Immediately after an official release the EPICS_PATCH_LEVEL is incremented # and the -DEV suffix is added (similar to the Maven -SNAPSHOT versions) -EPICS_DEV_SNAPSHOT= +EPICS_DEV_SNAPSHOT=-DEV # No changes should be needed below here diff --git a/configure/CONFIG_CA_VERSION b/configure/CONFIG_CA_VERSION index 54d24a22b..d565e7ce1 100644 --- a/configure/CONFIG_CA_VERSION +++ b/configure/CONFIG_CA_VERSION @@ -2,11 +2,11 @@ EPICS_CA_MAJOR_VERSION = 4 EPICS_CA_MINOR_VERSION = 14 -EPICS_CA_MAINTENANCE_VERSION = 4 +EPICS_CA_MAINTENANCE_VERSION = 5 # Development flag, set to zero for release versions -EPICS_CA_DEVELOPMENT_FLAG = 0 +EPICS_CA_DEVELOPMENT_FLAG = 1 # Immediately after a release the MAINTENANCE_VERSION # will be incremented and the DEVELOPMENT_FLAG set to 1 diff --git a/configure/CONFIG_DATABASE_VERSION b/configure/CONFIG_DATABASE_VERSION index 8ee2abff6..b770ea72a 100644 --- a/configure/CONFIG_DATABASE_VERSION +++ b/configure/CONFIG_DATABASE_VERSION @@ -2,11 +2,11 @@ EPICS_DATABASE_MAJOR_VERSION = 3 EPICS_DATABASE_MINOR_VERSION = 23 -EPICS_DATABASE_MAINTENANCE_VERSION = 1 +EPICS_DATABASE_MAINTENANCE_VERSION = 2 # Development flag, set to zero for release versions -EPICS_DATABASE_DEVELOPMENT_FLAG = 0 +EPICS_DATABASE_DEVELOPMENT_FLAG = 1 # Immediately after a release the MAINTENANCE_VERSION # will be incremented and the DEVELOPMENT_FLAG set to 1 diff --git a/configure/CONFIG_LIBCOM_VERSION b/configure/CONFIG_LIBCOM_VERSION index 8be90d9c8..bb5c55904 100644 --- a/configure/CONFIG_LIBCOM_VERSION +++ b/configure/CONFIG_LIBCOM_VERSION @@ -2,11 +2,11 @@ EPICS_LIBCOM_MAJOR_VERSION = 3 EPICS_LIBCOM_MINOR_VERSION = 23 -EPICS_LIBCOM_MAINTENANCE_VERSION = 1 +EPICS_LIBCOM_MAINTENANCE_VERSION = 2 # Development flag, set to zero for release versions -EPICS_LIBCOM_DEVELOPMENT_FLAG = 0 +EPICS_LIBCOM_DEVELOPMENT_FLAG = 1 # Immediately after a release the MAINTENANCE_VERSION # will be incremented and the DEVELOPMENT_FLAG set to 1 diff --git a/documentation/RELEASE_NOTES.md b/documentation/RELEASE_NOTES.md index 8cad1a544..fc535d0d8 100644 --- a/documentation/RELEASE_NOTES.md +++ b/documentation/RELEASE_NOTES.md @@ -18,6 +18,13 @@ should also be read to understand what has changed since earlier releases: - [pva2pva](https://epics-base.github.io/pva2pva/release_notes.html) - [pvaClient](https://github.com/epics-base/pvaClientCPP/blob/master/documentation/RELEASE_NOTES.md) +**This version of EPICS has not been released yet.** + +## Changes made on the 7.0 branch since 7.0.8.1 + + +----- + ## EPICS Release 7.0.8.1 ### Limit to `_FORTIFY_SOURCE=2` diff --git a/modules/normativeTypes b/modules/normativeTypes index 1250a3c23..7a2d264f2 160000 --- a/modules/normativeTypes +++ b/modules/normativeTypes @@ -1 +1 @@ -Subproject commit 1250a3c236f0aa92e0b5bd73647fd71d8a09360d +Subproject commit 7a2d264f2cb107bfd10adb23bc2b73d8323a79e4 diff --git a/modules/pvAccess b/modules/pvAccess index 96061ca1c..f1268adb8 160000 --- a/modules/pvAccess +++ b/modules/pvAccess @@ -1 +1 @@ -Subproject commit 96061ca1cc6d0e101b0033635396a8e6b6add68c +Subproject commit f1268adb8ecbacbd74bb66c172d02d9d427bedfd diff --git a/modules/pvData b/modules/pvData index 0ef8a3617..144f0228c 160000 --- a/modules/pvData +++ b/modules/pvData @@ -1 +1 @@ -Subproject commit 0ef8a361721bc4972743a9c9a0112f441ba36b0f +Subproject commit 144f0228cc412d2dc1eaad7e09e310697d18532f diff --git a/modules/pvDatabase b/modules/pvDatabase index e4cb8d239..f207e512d 160000 --- a/modules/pvDatabase +++ b/modules/pvDatabase @@ -1 +1 @@ -Subproject commit e4cb8d23973723d8d943bd86bc0213da2bd53eff +Subproject commit f207e512d67addab79e33a00b712e3444228ba7c diff --git a/modules/pva2pva b/modules/pva2pva index 3a08da445..949b3f63c 160000 --- a/modules/pva2pva +++ b/modules/pva2pva @@ -1 +1 @@ -Subproject commit 3a08da445b46e2e7029406d24425cdd3dfd7da24 +Subproject commit 949b3f63c2387bb92c1c22ca2f80f8d320805117 diff --git a/modules/pvaClient b/modules/pvaClient index a34876e36..8ed07fef9 160000 --- a/modules/pvaClient +++ b/modules/pvaClient @@ -1 +1 @@ -Subproject commit a34876e36a56c9de9b172d6a83a9439bb330783d +Subproject commit 8ed07fef96e41d35d47ab61276e29eb1a81e7fec