diff --git a/configure/CONFIG_BASE_VERSION b/configure/CONFIG_BASE_VERSION index 7972433a1..e48336bf8 100644 --- a/configure/CONFIG_BASE_VERSION +++ b/configure/CONFIG_BASE_VERSION @@ -52,7 +52,7 @@ 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) diff --git a/configure/CONFIG_CA_VERSION b/configure/CONFIG_CA_VERSION index 2cff78816..d565e7ce1 100644 --- a/configure/CONFIG_CA_VERSION +++ b/configure/CONFIG_CA_VERSION @@ -2,7 +2,7 @@ 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 diff --git a/configure/CONFIG_DATABASE_VERSION b/configure/CONFIG_DATABASE_VERSION index 8815d2d1e..b770ea72a 100644 --- a/configure/CONFIG_DATABASE_VERSION +++ b/configure/CONFIG_DATABASE_VERSION @@ -2,7 +2,7 @@ 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 diff --git a/configure/CONFIG_LIBCOM_VERSION b/configure/CONFIG_LIBCOM_VERSION index 4aab82a17..bb5c55904 100644 --- a/configure/CONFIG_LIBCOM_VERSION +++ b/configure/CONFIG_LIBCOM_VERSION @@ -2,7 +2,7 @@ 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 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 + diff --git a/documentation/RELEASE_NOTES.md b/documentation/RELEASE_NOTES.md index c66a44c66..fc535d0d8 100644 --- a/documentation/RELEASE_NOTES.md +++ b/documentation/RELEASE_NOTES.md @@ -20,7 +20,25 @@ should also be read to understand what has changed since earlier releases: **This version of EPICS has not been released yet.** -## Changes made on the 7.0 branch since 7.0.8 +## Changes made on the 7.0 branch since 7.0.8.1 + + +----- + +## EPICS Release 7.0.8.1 + +### 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 +46,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.
- 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>
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.
cd base-7.0Create a GPG signature file of the tarfile as follows:
- ./.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/
cd ..@@ -374,7 +374,7 @@ everything that has to be done since it's so easy to miss steps.
- gpg --armor --sign --detach-sig base-7.0.8.tar.gz + gpg --armor --sign --detach-sig base-7.0.8.1.tar.gz
- 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