Compare commits

..

4 commits

Author SHA1 Message Date
Kalev Lember
b609bd4fdb Recommend logrotate rather than hard requiring
This makes it possible for the flatpak module builds (libreoffice
flatpak) to avoid logrotate dep that doesn't make sense inside flatpak
containers.

Using Recommends instead of Requires still means that it gets pulled in
by default for regular fedora rpm installs, but users can exclude the
package if they have to.
2021-10-10 18:24:29 +02:00
Kalev Lember
2f20c35175 Remove requires on systemd-units as per updated guidelines
There is no need to have them as systemd correctly handles reloading
depending on the transaction ordering (even if systemd is installed
_after_ the package that installs the unit file).
2021-10-08 11:56:57 +02:00
Kalev Lember
4c47f59674 BuildRequire systemd-rpm-macros instead of systemd-units
The package that ships %systemd_post/postun/preun macros is
systemd-rpm-macros.
2021-10-08 11:56:56 +02:00
Philippe Makowski
77c392bbb4 Fix build on s390x (#1969393) 2021-08-20 10:54:46 +02:00
14 changed files with 22214 additions and 194 deletions

5
.gitignore vendored
View file

@ -14,8 +14,3 @@ Firebird-2.1.3.18185-0.RC2.tar.bz2
/Firebird-3.0.6.33328-0.tar.bz2
/Firebird-3.0.7.33374-0.tar.bz2
/Firebird-4.0.0.2496-0.tar.xz
/Firebird-4.0.2.2816-0.tar.xz
/Firebird-4.0.3.2975-0.tar.xz
/Firebird-4.0.4.3010-0.tar.xz
/Firebird-4.0.6.3221-0.tar.xz
/Firebird-5.0.3.1683-0-source.tar.xz

View file

@ -14,13 +14,15 @@ index 0000000..d49fdc5
+Version: @FIREBIRD_VERSION@
+Cflags: -I${includedir}/firebird
+Libs: -L${libdir} -lfbclient
--- Firebird-5.0.3.1683-0-source/configure.ac~ 2025-07-14 01:33:58.000000000 -0500
+++ Firebird-5.0.3.1683-0-source/configure.ac 2025-09-26 10:42:45.022624859 -0500
@@ -1540,6 +1540,7 @@
diff --git a/configure.ac b/configure.ac
index 0a3de36..922c778 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1307,6 +1307,7 @@ case "$PLATFORM" in
gen/install/misc/firebird.init.d.gentoo:builds/install/arch-specific/linux/firebird.init.d.gentoo.in
gen/install/misc/firebird.init.d.slackware:builds/install/arch-specific/linux/firebird.init.d.slackware.in
gen/install/misc/rc.config.firebird:builds/install/arch-specific/linux/rc.config.firebird.in
+ gen/install/misc/fbclient.pc:builds/install/arch-specific/linux/misc/fbclient.pc.in
gen/Release/firebird/bin/linuxLibrary.sh:builds/install/arch-specific/linux/linuxLibrary.sh.in
gen/install/misc/firebird.service:builds/install/arch-specific/linux/firebird.service.in
],
[chmod a+x gen/install/*sh 2>/dev/null])

View file

@ -1,12 +0,0 @@
--- a/extern/btyacc/Makefile 2022-08-12 15:24:40.846774310 +0200
+++ a/extern/btyacc/Makefile 2022-08-12 15:26:20.954809720 +0200
@@ -12,7 +12,7 @@
# across all of our supported compilers/platforms.
# Vanilla CFLAGS
-CFLAGS=
+CFLAGS=-fPIC -pie
# No LDFLAGS
#LDFLAGS=

144
c++17.patch Normal file
View file

@ -0,0 +1,144 @@
From ff49d71b0cdbab75f8a22717c4f88343a5961868 Mon Sep 17 00:00:00 2001
From: Adriano dos Santos Fernandes <adrianosf@gmail.com>
Date: Mon, 31 May 2021 08:55:26 -0300
Subject: [PATCH] Set POSIX build to use C++17.
---
CMakeLists.txt | 4 ++--
builds/posix/make.defaults | 2 +-
builds/posix/prefix.freebsd_amd64 | 2 +-
configure.ac | 2 +-
examples/extauth/Makefile | 2 +-
examples/interfaces/makefile | 2 +-
extern/icu/android/aarch64/config.sh | 2 +-
extern/icu/android/armv7a/config.sh | 4 ++--
extern/icu/android/linux/config.sh | 2 +-
9 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 620fd032af4..5f336efd611 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -206,14 +206,14 @@ if (MINGW)
set(CMAKE_STATIC_LIBRARY_PREFIX)
add_definitions(-D_WIN32_WINNT=0x0600)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4 -std=c++11")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4 -std=c++17")
endif()
if (UNIX)
set(OS_DIR posix)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -msse4 -std=c++11")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -msse4 -std=c++17")
if (NOT CMAKE_CROSSCOMPILING)
set(LIB_readline readline)
diff --git a/builds/posix/make.defaults b/builds/posix/make.defaults
index d96e89053fa..57bbb006865 100755
--- a/builds/posix/make.defaults
+++ b/builds/posix/make.defaults
@@ -103,7 +103,7 @@ GLOB_OPTIONS:=
#____________________________________________________________________________
# Global c++ flags: firebird needs no RTTI, choose build standard
-PLUSPLUS_FLAGS:= -fno-rtti -std=c++11
+PLUSPLUS_FLAGS:= -fno-rtti -std=c++17
# If this is defined then we use special rules useful for developers only
IsDeveloper = @DEVEL_FLG@
diff --git a/builds/posix/prefix.freebsd_amd64 b/builds/posix/prefix.freebsd_amd64
index f27567a2715..0736d87e935 100644
--- a/builds/posix/prefix.freebsd_amd64
+++ b/builds/posix/prefix.freebsd_amd64
@@ -26,4 +26,4 @@ DEV_FLAGS=-ggdb -DFREEBSD -DAMD64 -pipe -MMD -p -fPIC -Wall -Wno-non-virtual-dto
# This file must be compiled with SSE4.2 support
%/CRC32C.o: CXXFLAGS += -msse4
-CXXFLAGS := $(CXXFLAGS) -std=c++11
+CXXFLAGS := $(CXXFLAGS) -std=c++17
diff --git a/configure.ac b/configure.ac
index 9b40be43101..e4a83cf8d3b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -899,7 +899,7 @@ dnl if 64-bit mode, then archive tool, ar, needs -X64 option
fi
XE_SAVE_ENV()
-CXXFLAGS="$CXXFLAGS -std=c++11"
+CXXFLAGS="$CXXFLAGS -std=c++17"
AC_CACHE_CHECK([whether the C++ compiler understands noexcept], [ac_cv_cxx_noexcept], [
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int f(int x) noexcept { return x + 1; }]], [[]])],
[ac_cv_cxx_noexcept=yes], [ac_cv_cxx_noexcept=no])])
diff --git a/examples/extauth/Makefile b/examples/extauth/Makefile
index 9da7bbd357f..3c8b878d225 100644
--- a/examples/extauth/Makefile
+++ b/examples/extauth/Makefile
@@ -61,7 +61,7 @@ KEYGEN_objects=$(INTERMED)/keygen.o
TCWRAP_objects=$(INTERMED)/TcWrapper.o
KEY_AUTH_objects=$(INTERMED)/ExtAuth.o
-CXXFLAGS=-std=c++11 -pthread -I$(ROOT)/include -fPIC $(TOMCRYPT_COMPILE)
+CXXFLAGS=-std=c++17 -pthread -I$(ROOT)/include -fPIC $(TOMCRYPT_COMPILE)
LDFLAGS=-pthread -L$(LIB) -Wl,-rpath,'$$ORIGIN/../lib' $(TOMCRYPT_LINK)
LINK_LIBS=-lfbclient -ltomcrypt -ltommath
diff --git a/examples/interfaces/makefile b/examples/interfaces/makefile
index 153c3d558dc..b65dba90a7d 100644
--- a/examples/interfaces/makefile
+++ b/examples/interfaces/makefile
@@ -33,7 +33,7 @@ FBCLIENT = $(FIREBIRD)/lib/libfbclient.so
# General Compiler and linker Defines for Linux
# ---------------------------------------------------------------------
CXX = c++
-CXXFLAGS= -c -Wall -g3 -std=c++11 -fno-rtti $(INCLUDE)
+CXXFLAGS= -c -Wall -g3 -std=c++17 -fno-rtti $(INCLUDE)
RM = rm -f
#
diff --git a/extern/icu/android/aarch64/config.sh b/extern/icu/android/aarch64/config.sh
index 51ef623a3c5..f464d930ec2 100755
--- a/extern/icu/android/aarch64/config.sh
+++ b/extern/icu/android/aarch64/config.sh
@@ -18,7 +18,7 @@
--enable-dyload \
--with-cross-build=$CROSS_BUILD_DIR \
CFLAGS='-Os' \
- CXXFLAGS='--std=c++11' \
+ CXXFLAGS='--std=c++17' \
LDFLAGS='-static-libstdc++' \
CC=aarch64-linux-android24-clang \
CXX=aarch64-linux-android24-clang++ \
diff --git a/extern/icu/android/armv7a/config.sh b/extern/icu/android/armv7a/config.sh
index fe1bd037456..0e458c690e7 100755
--- a/extern/icu/android/armv7a/config.sh
+++ b/extern/icu/android/armv7a/config.sh
@@ -18,10 +18,10 @@
--enable-dyload \
--with-cross-build=$CROSS_BUILD_DIR \
CFLAGS='-Os -march=armv7-a -mfloat-abi=softfp -mfpu=neon' \
- CXXFLAGS='--std=c++11 -march=armv7-a -mfloat-abi=softfp -mfpu=neon' \
+ CXXFLAGS='--std=c++17 -march=armv7-a -mfloat-abi=softfp -mfpu=neon' \
LDFLAGS='-static-libstdc++ -march=armv7-a -Wl,--fix-cortex-a8' \
CC=arm-linux-androideabi-clang \
CXX=arm-linux-androideabi-clang++ \
AR=arm-linux-androideabi-ar \
RANLIB=arm-linux-androideabi-ranlib \
- --with-data-packaging=archive
\ No newline at end of file
+ --with-data-packaging=archive
diff --git a/extern/icu/android/linux/config.sh b/extern/icu/android/linux/config.sh
index a8b56024aae..6e7d9c5f5c8 100755
--- a/extern/icu/android/linux/config.sh
+++ b/extern/icu/android/linux/config.sh
@@ -1,7 +1,7 @@
#!/bin/sh
../source/runConfigureICU Linux --prefix=$PWD/prebuilt \
CFLAGS="-Os" \
- CXXFLAGS="--std=c++11" \
+ CXXFLAGS="--std=c++17" \
--enable-static \
--enable-shared=no \
--enable-extras=no \

View file

@ -1,54 +1,38 @@
Description: make cloop build honor compiler/linker flags from the environment
Author: Damyan Ivanov <dmn@debian.org>
Forwarded: no
diff --git a/extern/cloop/Makefile b/extern/cloop/Makefile
index 08516c2..1573dc2 100644
--- a/extern/cloop/Makefile
+++ b/extern/cloop/Makefile
@@ -27,8 +27,8 @@ SRCS_CPP := $(foreach sdir,$(SRC_DIRS),$
@@ -6,7 +6,7 @@ TARGET := release
CC := $(CC)
CXX := $(CXX)
-LD := $(CXX)
+LD := $(CXX) $(LDFLAGS)
SRC_DIR := src
BUILD_DIR := build
@@ -27,8 +27,9 @@ SRCS_CPP := $(foreach sdir,$(SRC_DIRS),$(wildcard $(sdir)/*.cpp))
OBJS_C := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS_C))
OBJS_CPP := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRCS_CPP))
-C_FLAGS := -ggdb -fPIC -MMD -MP -W -Wall -Wno-unused-parameter
-CXX_FLAGS := $(C_FLAGS) -std=c++11
+C_FLAGS := -ggdb -fPIC -MMD -MP -W -Wall -Wno-unused-parameter $(CPPFLAGS) $(CFLAGS)
+CXX_FLAGS := $(C_FLAGS) $(CXXFLAGS) -std=c++11
FPC_FLAGS := -Mdelphi -Cg
-CXX_FLAGS := $(C_FLAGS)
+COMMON_C_FLAGS := -ggdb -fPIC -MMD -MP -W -Wall -Wno-unused-parameter
+C_FLAGS := $(COMMON_C_FLAGS) $(CFLAGS) $(CPPFLAGS)
+CXX_FLAGS := $(COMMON_C_FLAGS) $(CXXFLAGS) $(CPPFLAGS)
FPC_FLAGS := -Mdelphi
ifeq ($(shell uname),FreeBSD)
@@ -94,7 +94,7 @@ $(BIN_DIR)/cloop: \
$(OBJ_DIR)/cloop/Main.o \
| $(BIN_DIR)
diff --git a/extern/btyacc/Makefile b/extern/btyacc/Makefile
index f432965..52d8443 100644
--- a/extern/btyacc/Makefile
+++ b/extern/btyacc/Makefile
@@ -12,7 +12,7 @@ HDRS = defs.h mstring.h
# across all of our supported compilers/platforms.
- $(LD) $^ -o $@ $(LIBS)
+ $(LD) $(LDFLAGS) $^ -o $@ $(LIBS)
# Vanilla CFLAGS
-CFLAGS=
+CFLAGS=-fPIE
$(SRC_DIR)/tests/test1/CalcCApi.h: $(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl
$(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl c-header $@ CALC_C_API_H CALC_I
@@ -121,23 +121,23 @@ $(BIN_DIR)/test1-c$(SHRLIB_EXT): \
$(OBJ_DIR)/tests/test1/CalcCApi.o \
$(OBJ_DIR)/tests/test1/CTest.o \
- $(LD) $^ -shared $(DL_LIB) -o $@ $(LIBS)
+ $(LD) $(LDFLAGS) $^ -shared $(DL_LIB) -o $@ $(LIBS)
$(BIN_DIR)/test1-c$(EXE_EXT): \
$(OBJ_DIR)/tests/test1/CalcCApi.o \
$(OBJ_DIR)/tests/test1/CTest.o \
- $(LD) $^ $(DL_LIB) -o $@ $(LIBS)
+ $(LD) $(LDFLAGS) $^ $(DL_LIB) -o $@ $(LIBS)
$(BIN_DIR)/test1-cpp$(SHRLIB_EXT): \
$(OBJ_DIR)/tests/test1/CppTest.o \
- $(LD) $^ -shared $(DL_LIB) -o $@ $(LIBS)
+ $(LD) $(LDFLAGS) $^ -shared $(DL_LIB) -o $@ $(LIBS)
$(BIN_DIR)/test1-cpp$(EXE_EXT): \
$(OBJ_DIR)/tests/test1/CppTest.o \
- $(LD) $^ $(DL_LIB) -o $@ $(LIBS)
+ $(LD) $(LDFLAGS) $^ $(DL_LIB) -o $@ $(LIBS)
$(BIN_DIR)/test1-pascal$(SHRLIB_EXT): \
$(SRC_DIR)/tests/test1/PascalClasses.pas \
# No LDFLAGS
#LDFLAGS=

View file

@ -1,28 +0,0 @@
diff --git a/builds/posix/Makefile.in.plugins_examples b/builds/posix/Makefile.in.plugins_examples
index 989e80d..344f487 100644
--- a/builds/posix/Makefile.in.plugins_examples
+++ b/builds/posix/Makefile.in.plugins_examples
@@ -101,7 +101,7 @@ AllObjects += $(CA_Objects)
crypt_app: $(CRYPT_APP)
$(CRYPT_APP): $(CA_Objects)
- $(EXE_LINK) $(LSB_UNDEF) $^ -o $@ $(FIREBIRD_LIBRARY_LINK)
+ $(EXE_LINK) $(EXE_LINK_OPTIONS) $(LSB_UNDEF) $^ -o $@ $(FIREBIRD_LIBRARY_LINK)
include $(ROOT)/gen/make.shared.targets
diff --git a/examples/extauth/Makefile b/examples/extauth/Makefile
index 3c8b878..7de22a8 100644
--- a/examples/extauth/Makefile
+++ b/examples/extauth/Makefile
@@ -61,8 +61,8 @@ KEYGEN_objects=$(INTERMED)/keygen.o
TCWRAP_objects=$(INTERMED)/TcWrapper.o
KEY_AUTH_objects=$(INTERMED)/ExtAuth.o
-CXXFLAGS=-std=c++17 -pthread -I$(ROOT)/include -fPIC $(TOMCRYPT_COMPILE)
-LDFLAGS=-pthread -L$(LIB) -Wl,-rpath,'$$ORIGIN/../lib' $(TOMCRYPT_LINK)
+CXXFLAGS+=-std=c++17 -pthread -I$(ROOT)/include -fPIC $(TOMCRYPT_COMPILE)
+LDFLAGS+=-pthread -L$(LIB) -Wl,-rpath,'$$ORIGIN/../lib' $(TOMCRYPT_LINK)
LINK_LIBS=-lfbclient -ltomcrypt -ltommath

View file

@ -0,0 +1,15 @@
[Unit]
Description=Firebird Database Server ( SuperServer )
After=network.target
Conflicts=firebird-classic.socket
[Service]
User=firebird
Group=firebird
ExecStart=/usr/sbin/fbguard -forever
StandardError=syslog
RuntimeDirectory=firebird
RuntimeDirectoryMode=0775
[Install]
WantedBy=multi-user.target

View file

@ -7,6 +7,7 @@ Conflicts=firebird-classic.socket
User=firebird
Group=firebird
ExecStart=/usr/sbin/fbguard -forever
StandardError=syslog
RuntimeDirectory=firebird
RuntimeDirectoryMode=0775

View file

@ -1,7 +1,7 @@
%global upversion 5.0.3.1683
%global upversion 4.0.0.2496
%global pkgversion Firebird-%{upversion}-0
%global major 5.0
%global major 4.0
%global _hardened_build 1
# firebird is mis-compiled when LTO is enabled. A root
# cause analysis has not yet been completed. Reported upstream.
@ -10,14 +10,13 @@
Name: firebird
Version: %{upversion}
Release: 1%{?dist}
Release: 5%{?dist}
Summary: SQL relational database management system
# Automatically converted from old format: Interbase - review is highly recommended.
License: Interbase-1.0
License: Interbase
URL: http://www.firebirdsql.org/
Source0: https://github.com/FirebirdSQL/firebird/releases/download/v5.0.3/%{pkgversion}-source.tar.xz
Source0: https://github.com/FirebirdSQL/firebird/releases/download/v4.0.0/%{pkgversion}.tar.xz
Source1: firebird-logrotate
Source2: README.Fedora
Source3: firebird.service
@ -31,10 +30,10 @@ Patch203: no-copy-from-icu.patch
Patch205: cloop-honour-build-flags.patch
# from upstream
Patch401: btyacc-honour-build-flags.patch
# not yet upstream
Patch501: examples-honour-build-flags.patch
Patch301: c++17.patch
Patch302: noexcept.patch
Patch303: fix_build_on_big_endian_platforms.patch
Patch304: ttmath-abseil.4.0.0.patch
BuildRequires: autoconf
BuildRequires: automake
@ -53,15 +52,29 @@ BuildRequires: make
BuildRequires: libtomcrypt-devel
BuildRequires: unzip
BuildRequires: sed
BuildRequires: cmake
Requires(postun): /usr/sbin/userdel
Requires(postun): /usr/sbin/groupdel
Requires(pre): /usr/sbin/groupadd
Requires(pre): /usr/sbin/useradd
Recommends: logrotate
Requires: libfbclient2 = %{version}-%{release}
Requires: libib-util = %{version}-%{release}
Requires: %{name}-utils = %{version}-%{release}
Obsoletes: firebird-arch < 4.0
Obsoletes: firebird-filesystem < 4.0
Obsoletes: firebird-classic-common < 4.0
Obsoletes: firebird-classic < 4.0
Obsoletes: firebird-superclassic < 4.0
Obsoletes: firebird-superserver < 4.0
Conflicts: firebird-arch < 4.0
Conflicts: firebird-filesystem < 4.0
Conflicts: firebird-classic-common < 4.0
Conflicts: firebird-classic < 4.0
Conflicts: firebird-superclassic < 4.0
Conflicts: firebird-superserver < 4.0
%description
Firebird is a relational database offering many ANSI SQL standard
@ -103,6 +116,9 @@ in production systems, under a variety of names, since 1981.
%package -n libfbclient2
Summary: Firebird SQL server client library
Obsoletes: firebird-libfbclient < 4.0
Conflicts: firebird-libfbclient < 4.0
Obsoletes: firebird-libfbembed < 4.0
%description -n libfbclient2
Shared client library for Firebird SQL server.
@ -175,17 +191,16 @@ in production systems, under a variety of names, since 1981.
%prep
%setup -q -n %{pkgversion}-source
%patch -P101 -p1
%patch -P203 -p1
%patch -P205 -p1
%patch -P401 -p1
%patch -P501 -p1
# Create a sysusers.d config file
cat >firebird.sysusers.conf <<EOF
u firebird - - - -
EOF
%setup -q -n %{pkgversion}
%patch101 -p1
%patch203 -p1
%patch205 -p1
%patch301 -p1
%patch302 -p1
%ifarch s390x
%patch303 -p1
%patch304 -p1
%endif
%build
@ -224,7 +239,6 @@ chmod u+rw,a+rx gen/buildroot/%{_includedir}/firebird/impl
cp -r gen/buildroot/* ${RPM_BUILD_ROOT}/
mkdir -p ${RPM_BUILD_ROOT}%{_libdir}/pkgconfig
cp -v gen/install/misc/*.pc ${RPM_BUILD_ROOT}%{_libdir}/pkgconfig/
install -m0644 -D firebird.sysusers.conf %{buildroot}%{_sysusersdir}/firebird.conf
cd ${RPM_BUILD_ROOT}
rm -vf .%{_sbindir}/*.sh
@ -254,6 +268,10 @@ cp -f %{SOURCE3} .%{_unitdir}/%{name}.service
%pre
# Create the firebird group if it doesn't exist
getent group %{name} > /dev/null || /usr/sbin/groupadd -r %{name}
getent passwd %{name} >/dev/null || /usr/sbin/useradd -d / -g %{name} -s /sbin/nologin -r %{name}
# Add gds_db to /etc/services if needed
FileName=/etc/services
newLine="gds_db 3050/tcp # Firebird SQL Database Remote Protocol"
@ -276,7 +294,9 @@ fi
%files
%{_docdir}/%{name}/
%{_docdir}/%{name}/IDPLicense.txt
%{_docdir}/%{name}/IPLicense.txt
%{_docdir}/%{name}/README.Fedora
%{_bindir}/fbtracemgr
%{_sbindir}/firebird
%{_sbindir}/fbguard
@ -297,7 +317,8 @@ fi
%dir %attr(0700,%{name},%{name}) %{_localstatedir}/lib/%{name}/data
%dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/system
%dir %attr(0755,%{name},%{name}) %{_localstatedir}/lib/%{name}/tzdata
%attr(0600,firebird,firebird) %config(noreplace) %{_localstatedir}/lib/%{name}/secdb/security5.fdb
%attr(0600,firebird,firebird) %config(noreplace) %{_localstatedir}/lib/%{name}/secdb/security4.fdb
%attr(0644,firebird,firebird) %{_localstatedir}/lib/%{name}/system/help.fdb
%attr(0644,firebird,firebird) %{_localstatedir}/lib/%{name}/system/firebird.msg
%attr(0644,firebird,firebird) %{_localstatedir}/lib/%{name}/tzdata/*.res
%ghost %dir %attr(0775,%{name},%{name}) /run/%{name}
@ -307,7 +328,6 @@ fi
%config(noreplace) %attr(0644,root,root) %{_sysconfdir}/logrotate.d/%{name}
%attr(0644,root,root) %{_unitdir}/%{name}.service
%{_sysusersdir}/firebird.conf
%files devel
@ -318,8 +338,7 @@ fi
%files -n libfbclient2
%{_libdir}/libfbclient.so.2
%{_libdir}/libfbclient.so.%{major}*
%{_libdir}/libfbclient.so.*
%files -n libfbclient2-devel
@ -332,7 +351,7 @@ fi
%files doc
%{_docdir}/%{name}/
%{_docdir}/%{name}
%exclude %{_docdir}/%{name}/sample
%exclude %{_docdir}/%{name}/IDPLicense.txt
%exclude %{_docdir}/%{name}/IPLicense.txt
@ -347,6 +366,7 @@ fi
%{_bindir}/gsec
%{_bindir}/isql-fb
%{_bindir}/nbackup
%{_bindir}/qli
%{_bindir}/gsplit
@ -356,63 +376,6 @@ fi
%changelog
* Fri Sep 26 2025 Gwyn Ciesla <gwync@protonmail.com> - 5.0.3.1683-1
- 5.0.3.1683
* Thu Sep 25 2025 Gwyn Ciesla <gwync@protonmail.com> - 4.0.6.3221-1
- 4.0.6.3221
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.4.3010-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Tue Feb 11 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 4.0.4.3010-7
- Add sysusers.d config file to allow rpm to create users/groups automatically
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.4.3010-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Wed Aug 07 2024 Miroslav Suchý <msuchy@redhat.com> - 4.0.4.3010-5
- convert license to SPDX
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.4.3010-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.4.3010-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.4.3010-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Thu Nov 09 2023 Philippe Makowski <makowski@fedoraproject.org> - 4.0.4.3010-0
- Update to 4.0.4 (#2247832)
* Tue Aug 08 2023 Philippe Makowski <makowski@fedoraproject.org> - 4.0.3.2975-0
- Update to 4.0.3 (#2228171)
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.2.2816-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.2.2816-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Thu Dec 1 2022 Florian Weimer <fweimer@redhat.com> - 4.0.2.2816-3
- Port configure script to C99
* Thu Nov 24 2022 Philippe Makowski <makowski@fedoraproject.org> - 4.0.2.2816-2
- Patch for autoconf 2.72 (#2144802)
* Fri Aug 12 2022 Philippe Makowski <makowski@fedoraproject.org> - 4.0.2.2816-1
- Update to 4.0.2 (#2033945)
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.0.2496-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Fri May 13 2022 Philippe Makowski <makowski@fedoraproject.org> - 4.0.0.2496-7
- Remove Standard output type syslog (#2035798)
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.0.2496-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Sun Oct 10 2021 Kalev Lember <klember@redhat.com> - 4.0.0.2496-5
- Recommend logrotate rather than hard requiring

View file

@ -0,0 +1,36 @@
From cd0682bc55eb01d53278d09edc1e9e2e9bfb9983 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
Date: Fri, 11 Jun 2021 12:39:31 +0200
Subject: [PATCH] fix build on big endian platforms (#6852)
* fix missing declaration of type_alignments[] for big endian platforms
* add missing definition of lwp for big endian platforms
---
src/jrd/sort.cpp | 1 +
src/jrd/sort.h | 1 +
2 files changed, 2 insertions(+)
diff --git a/src/jrd/sort.cpp b/src/jrd/sort.cpp
index 37f5f816407..77ca69c2536 100644
--- a/src/jrd/sort.cpp
+++ b/src/jrd/sort.cpp
@@ -713,6 +713,7 @@ void Sort::diddleKey(UCHAR* record, bool direction, bool duplicateHandling)
for (sort_key_def* key = m_description.begin(), *end = m_description.end(); key < end; key++)
{
UCHAR* p = record + key->getSkdOffset();
+ SORTP* lwp = (SORTP*) p;
USHORT n = key->getSkdLength();
USHORT complement = key->skd_flags & SKD_descending;
diff --git a/src/jrd/sort.h b/src/jrd/sort.h
index 8e23e70ccc5..e3bbbb7779c 100644
--- a/src/jrd/sort.h
+++ b/src/jrd/sort.h
@@ -27,6 +27,7 @@
#include "../include/fb_blk.h"
#include "../common/DecFloat.h"
#include "../jrd/TempSpace.h"
+#include "../jrd/align.h"
namespace Jrd {

View file

@ -1,6 +1,18 @@
Description: Link isql with ICU instead of embedding part of it in the source
Author: Damyan Ivanov <dmn@debian.org>
diff --git a/builds/posix/Makefile.in b/builds/posix/Makefile.in
index bb4ceb1..87e75a2 100644
--- a/builds/posix/Makefile.in
+++ b/builds/posix/Makefile.in
@@ -534,7 +534,7 @@ $(GSTAT): $(GSTAT_Objects) $(COMMON_LIB)
isql: $(ISQL)
$(ISQL): $(ISQL_Objects) $(COMMON_LIB)
- $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LIBEDITLINE) $(TERMLIB) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..)
+ $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LIBEDITLINE) $(TERMLIB) $(LINK_LIBS) $(ICU_LIBS) $(call LINK_DARWIN_RPATH,..)
nbackup: $(NBACKUP)
diff --git a/src/isql/isql.epp b/src/isql/isql.epp
index 79da1f7..4554252 100644
--- a/src/isql/isql.epp
+++ b/src/isql/isql.epp
@@ -173,34 +173,6 @@ const char* UNKNOWN = "*unknown*";
@ -38,14 +50,3 @@ Author: Damyan Ivanov <dmn@debian.org>
// Return the number of characters of a string.
static unsigned charLength(SSHORT charset, unsigned len, const char* str)
{
--- a/builds/posix/Makefile.in
+++ b/builds/posix/Makefile.in
@@ -543,7 +543,7 @@ $(GSTAT): $(GSTAT_Objects) $(COMMON_LIB
isql: $(ISQL)
$(ISQL): $(ISQL_Objects) $(COMMON_LIB)
- $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LIBEDITLINE) $(TERMLIB) $(LINK_LIBS)
+ $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LIBEDITLINE) $(TERMLIB) $(LINK_LIBS) $(ICU_LIBS)
nbackup: $(NBACKUP)

664
noexcept.patch Normal file
View file

@ -0,0 +1,664 @@
From a999f35f0fad27798fdc88a3f5cdf2e3e9041594 Mon Sep 17 00:00:00 2001
From: Adriano dos Santos Fernandes <adrianosf@gmail.com>
Date: Mon, 31 May 2021 08:55:26 -0300
Subject: [PATCH] Replace FB_NOTHROW by noexcept and remove FB_THROW.
---
src/common/classes/alloc.cpp | 128 +++++++++++++++++------------------
src/common/classes/alloc.h | 74 ++++++++------------
2 files changed, 94 insertions(+), 108 deletions(-)
diff --git a/src/common/classes/alloc.cpp b/src/common/classes/alloc.cpp
index 1bd6ad4f09d..ee91ab89df8 100644
--- a/src/common/classes/alloc.cpp
+++ b/src/common/classes/alloc.cpp
@@ -68,19 +68,19 @@
#define VALGRIND_FIX_IT // overrides suspicious valgrind behavior
#endif // USE_VALGRIND
-void* operator new(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION)
+void* operator new(size_t s ALLOC_PARAMS)
{
return MemoryPool::globalAlloc(s ALLOC_PASS_ARGS);
}
-void* operator new[](size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION)
+void* operator new[](size_t s ALLOC_PARAMS)
{
return MemoryPool::globalAlloc(s ALLOC_PASS_ARGS);
}
-void operator delete(void* mem ALLOC_PARAMS) FB_NOTHROW
+void operator delete(void* mem ALLOC_PARAMS) noexcept
{
MemoryPool::globalFree(mem);
}
-void operator delete[](void* mem ALLOC_PARAMS) FB_NOTHROW
+void operator delete[](void* mem ALLOC_PARAMS) noexcept
{
MemoryPool::globalFree(mem);
}
@@ -109,7 +109,7 @@ static const int GUARD_BYTES = 0;
#endif
template <typename T>
-T absVal(T n) FB_NOTHROW
+T absVal(T n) noexcept
{
return n < 0 ? -n : n;
}
@@ -160,7 +160,7 @@ struct FailedBlock
FailedBlock* failedList = NULL;
#endif
-void corrupt(const char* text) FB_NOTHROW
+void corrupt(const char* text) noexcept
{
#ifdef DEV_BUILD
fprintf(stderr, "%s\n", text);
@@ -377,7 +377,7 @@ class MemHeader
#ifdef MEM_DEBUG
void print_contents(bool used, FILE* file, bool used_only,
- const char* filter_path, const size_t filter_len) FB_NOTHROW
+ const char* filter_path, const size_t filter_len) noexcept
{
if (used || !used_only)
{
@@ -406,7 +406,7 @@ class MemHeader
}
#endif
- void validate(MemPool* p, StatInt& vUse) FB_NOTHROW
+ void validate(MemPool* p, StatInt& vUse) noexcept
{
if (p == pool && !isExtent())
vUse += getSize();
@@ -461,7 +461,7 @@ class MemBaseHunk
}
public:
- void validate(MemPool* pool, size_t hdr, StatInt& vMap, StatInt& vUse) FB_NOTHROW
+ void validate(MemPool* pool, size_t hdr, StatInt& vMap, StatInt& vUse) noexcept
{
if (length >= DEFAULT_ALLOCATION)
{
@@ -526,7 +526,7 @@ class MemSmallHunk : public MemBaseHunk<MemSmallHunk>
#ifdef MEM_DEBUG
void print_contents(FILE* file, MemPool* pool, bool used_only,
- const char* filter_path, const size_t filter_len) FB_NOTHROW
+ const char* filter_path, const size_t filter_len) noexcept
{
UCHAR* m = ((UCHAR*) this) + hdrSize();
fprintf(file, "Small hunk %p: memory=[%p:%p) spaceRemaining=%" SIZEFORMAT " length=%" SIZEFORMAT "\n",
@@ -598,7 +598,7 @@ class MemMediumHunk : public MemBaseHunk<MemMediumHunk>
#ifdef MEM_DEBUG
void print_contents(FILE* file, MemPool* pool, bool used_only,
- const char* filter_path, const size_t filter_len) FB_NOTHROW
+ const char* filter_path, const size_t filter_len) noexcept
{
UCHAR* m = ((UCHAR*) this) + hdrSize();
fprintf(file, "Medium hunk %p: memory=[%p:%p) spaceRemaining=%" SIZEFORMAT " length=%" SIZEFORMAT "\n",
@@ -630,7 +630,7 @@ class MemBigHunk
#ifdef MEM_DEBUG
void print_contents(FILE* file, MemPool* pool, bool used_only,
- const char* filter_path, const size_t filter_len) FB_NOTHROW
+ const char* filter_path, const size_t filter_len) noexcept
{
fprintf(file, "Big hunk %p: memory=%p length=%" SIZEFORMAT "\n",
this, block, length);
@@ -1647,7 +1647,7 @@ class FreeObjects
~FreeObjects();
- FreeObjPtr allocateBlock(MemPool* pool, size_t from, size_t& size) FB_THROW (OOM_EXCEPTION)
+ FreeObjPtr allocateBlock(MemPool* pool, size_t from, size_t& size)
{
size_t full_size = size + (from ? 0 : ListBuilder::MEM_OVERHEAD);
if (full_size > Limits::TOP_LIMIT)
@@ -1696,7 +1696,7 @@ class FreeObjects
#ifdef MEM_DEBUG
void print_contents(FILE* file, MemPool* pool, bool used_only,
- const char* filter_path, const size_t filter_len) FB_NOTHROW
+ const char* filter_path, const size_t filter_len) noexcept
{
for (Extent* ext = currentExtent; ext; ext = ext->next)
ext->print_contents(file, pool, used_only, filter_path, filter_len);
@@ -1717,7 +1717,7 @@ class FreeObjects
ListBuilder listBuilder;
Extent* currentExtent;
- MemBlock* newBlock(MemPool* pool, unsigned slot) FB_THROW (OOM_EXCEPTION);
+ MemBlock* newBlock(MemPool* pool, unsigned slot);
};
@@ -1799,26 +1799,26 @@ class MemPool
};
#endif // VALIDATE_POOL
- MemBlock* alloc(size_t from, size_t& length, bool flagRedirect) FB_THROW (OOM_EXCEPTION);
- void releaseBlock(MemBlock *block, bool flagDecr) FB_NOTHROW;
+ MemBlock* alloc(size_t from, size_t& length, bool flagRedirect);
+ void releaseBlock(MemBlock *block, bool flagDecr) noexcept;
public:
- void* allocate(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION);
- MemBlock* allocate2(size_t from, size_t& size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION);
+ void* allocate(size_t size ALLOC_PARAMS);
+ MemBlock* allocate2(size_t from, size_t& size ALLOC_PARAMS);
private:
- virtual void memoryIsExhausted(void) FB_THROW (OOM_EXCEPTION);
- void* allocRaw(size_t length) FB_THROW (OOM_EXCEPTION);
- static void releaseMemory(void* block, bool flagExtent) FB_NOTHROW;
- static void releaseRaw(bool destroying, void *block, size_t size, bool use_cache = true) FB_NOTHROW;
- void* getExtent(size_t from, size_t& to) FB_THROW (OOM_EXCEPTION);
+ virtual void memoryIsExhausted(void);
+ void* allocRaw(size_t length);
+ static void releaseMemory(void* block, bool flagExtent) noexcept;
+ static void releaseRaw(bool destroying, void *block, size_t size, bool use_cache = true) noexcept;
+ void* getExtent(size_t from, size_t& to);
public:
- static void releaseExtent(bool destroying, void *block, size_t size, MemPool* pool) FB_NOTHROW;
+ static void releaseExtent(bool destroying, void *block, size_t size, MemPool* pool) noexcept;
// pass desired size, return actual extent size
template <class Extent>
- void newExtent(size_t& size, Extent** linkedList) FB_THROW (OOM_EXCEPTION);
+ void newExtent(size_t& size, Extent** linkedList);
private:
#ifdef USE_VALGRIND
@@ -1830,9 +1830,9 @@ class MemPool
public:
static void deletePool(MemPool* pool);
- static void globalFree(void* block) FB_NOTHROW;
+ static void globalFree(void* block) noexcept;
- static void deallocate(void* block) FB_NOTHROW;
+ static void deallocate(void* block) noexcept;
bool validate(char* buf, FB_SIZE_T size);
// Create memory pool instance
@@ -1840,7 +1840,7 @@ class MemPool
// Set statistics group for pool. Usage counters will be decremented from
// previously set group and added to new
- void setStatsGroup(MemoryStats& stats) FB_NOTHROW;
+ void setStatsGroup(MemoryStats& stats) noexcept;
// Initialize and finalize global memory pool
static MemPool* init()
@@ -1893,25 +1893,25 @@ class MemPool
}
// Statistics
- void increment_usage(size_t size) FB_NOTHROW
+ void increment_usage(size_t size) noexcept
{
stats->increment_usage(size);
used_memory += size;
}
- void decrement_usage(size_t size) FB_NOTHROW
+ void decrement_usage(size_t size) noexcept
{
stats->decrement_usage(size);
used_memory -= size;
}
- void increment_mapping(size_t size) FB_NOTHROW
+ void increment_mapping(size_t size) noexcept
{
stats->increment_mapping(size);
mapped_memory += size;
}
- void decrement_mapping(size_t size) FB_NOTHROW
+ void decrement_mapping(size_t size) noexcept
{
stats->decrement_mapping(size);
mapped_memory -= size;
@@ -1919,9 +1919,9 @@ class MemPool
#ifdef MEM_DEBUG
// Print out pool contents. This is debugging routine
- void print_contents(FILE*, unsigned flags, const char* filter_path) FB_NOTHROW;
+ void print_contents(FILE*, unsigned flags, const char* filter_path) noexcept;
// The same routine, but more easily callable from the debugger
- void print_contents(const char* filename, unsigned flags, const char* filter_path) FB_NOTHROW;
+ void print_contents(const char* filename, unsigned flags, const char* filter_path) noexcept;
private:
MemPool* next;
@@ -1961,7 +1961,7 @@ void DoubleLinkedList::decrUsage(MemMediumHunk* hunk, MemPool* pool)
template <class ListBuilder, class Limits>
-MemBlock* FreeObjects<ListBuilder, Limits>::newBlock(MemPool* pool, unsigned slot) FB_THROW (OOM_EXCEPTION)
+MemBlock* FreeObjects<ListBuilder, Limits>::newBlock(MemPool* pool, unsigned slot)
{
size_t size = Limits::getSize(slot);
@@ -2170,7 +2170,7 @@ MemPool::~MemPool(void)
}
template <class Extent>
-void MemPool::newExtent(size_t& size, Extent** linkedList) FB_THROW(OOM_EXCEPTION)
+void MemPool::newExtent(size_t& size, Extent** linkedList)
{
// No large enough block found. We need to extend the pool
void* memory = NULL;
@@ -2214,7 +2214,7 @@ MemoryPool* MemoryPool::createPool(MemoryPool* parentPool, MemoryStats& stats)
return FB_NEW_POOL(*parentPool) MemoryPool(p);
}
-void MemPool::setStatsGroup(MemoryStats& newStats) FB_NOTHROW
+void MemPool::setStatsGroup(MemoryStats& newStats) noexcept
{
MutexLockGuard guard(mutex, "MemPool::setStatsGroup");
@@ -2230,12 +2230,12 @@ void MemPool::setStatsGroup(MemoryStats& newStats) FB_NOTHROW
stats->increment_usage(sav_used_memory);
}
-void MemoryPool::setStatsGroup(MemoryStats& newStats) FB_NOTHROW
+void MemoryPool::setStatsGroup(MemoryStats& newStats) noexcept
{
pool->setStatsGroup(newStats);
}
-MemBlock* MemPool::alloc(size_t from, size_t& length, bool flagRedirect) FB_THROW (OOM_EXCEPTION)
+MemBlock* MemPool::alloc(size_t from, size_t& length, bool flagRedirect)
{
MutexEnsureUnlock guard(mutex, "MemPool::alloc");
guard.enter();
@@ -2294,7 +2294,7 @@ MemBlock* MemPool::allocate2(size_t from, size_t& size
#ifdef DEBUG_GDS_ALLOC
, const char* fileName, int line
#endif
-) FB_THROW (OOM_EXCEPTION)
+)
{
size_t length = from ? size : ROUNDUP(size + VALGRIND_REDZONE, roundingSize) + GUARD_BYTES;
MemBlock* memory = alloc(from, length, true);
@@ -2324,7 +2324,7 @@ MemBlock* MemPool::allocate2(size_t from, size_t& size
}
-void* MemPool::allocate(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION)
+void* MemPool::allocate(size_t size ALLOC_PARAMS)
{
#ifdef VALIDATE_POOL
MutexLockGuard guard(mutex, "MemPool::allocate");
@@ -2339,7 +2339,7 @@ void* MemPool::allocate(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION)
}
-void MemPool::releaseMemory(void* object, bool flagExtent) FB_NOTHROW
+void MemPool::releaseMemory(void* object, bool flagExtent) noexcept
{
if (object)
{
@@ -2403,7 +2403,7 @@ void MemPool::releaseMemory(void* object, bool flagExtent) FB_NOTHROW
}
}
-void MemPool::releaseBlock(MemBlock* block, bool decrUsage) FB_NOTHROW
+void MemPool::releaseBlock(MemBlock* block, bool decrUsage) noexcept
{
if (block->pool != this)
corrupt("bad block released");
@@ -2464,12 +2464,12 @@ void MemPool::releaseBlock(MemBlock* block, bool decrUsage) FB_NOTHROW
releaseRaw(pool_destroying, hunk, hunk->length, false);
}
-void MemPool::memoryIsExhausted(void) FB_THROW (OOM_EXCEPTION)
+void MemPool::memoryIsExhausted(void)
{
Firebird::BadAlloc::raise();
}
-void* MemPool::allocRaw(size_t size) FB_THROW (OOM_EXCEPTION)
+void* MemPool::allocRaw(size_t size)
{
#ifndef USE_VALGRIND
if (size == DEFAULT_ALLOCATION)
@@ -2549,7 +2549,7 @@ void* MemPool::allocRaw(size_t size) FB_THROW (OOM_EXCEPTION)
}
-void* MemPool::getExtent(size_t from, size_t& to) FB_THROW(OOM_EXCEPTION) // pass desired minimum size, return actual extent size
+void* MemPool::getExtent(size_t from, size_t& to) // pass desired minimum size, return actual extent size
{
#ifdef VALIDATE_POOL
MutexLockGuard guard(mutex, "MemPool::getExtent");
@@ -2560,7 +2560,7 @@ void* MemPool::getExtent(size_t from, size_t& to) FB_THROW(OOM_EXCEPTION) // pa
}
-void MemPool::releaseExtent(bool destroying, void* block, size_t size, MemPool* pool) FB_NOTHROW
+void MemPool::releaseExtent(bool destroying, void* block, size_t size, MemPool* pool) noexcept
{
if (size < DEFAULT_ALLOCATION)
releaseMemory(block, true);
@@ -2573,7 +2573,7 @@ void MemPool::releaseExtent(bool destroying, void* block, size_t size, MemPool*
}
-void MemPool::releaseRaw(bool destroying, void* block, size_t size, bool use_cache) FB_NOTHROW
+void MemPool::releaseRaw(bool destroying, void* block, size_t size, bool use_cache) noexcept
{
#ifndef USE_VALGRIND
if (use_cache && (size == DEFAULT_ALLOCATION))
@@ -2666,19 +2666,19 @@ void MemPool::releaseRaw(bool destroying, void* block, size_t size, bool use_cac
}
}
-void MemPool::globalFree(void* block) FB_NOTHROW
+void MemPool::globalFree(void* block) noexcept
{
deallocate(block);
}
-void* MemoryPool::calloc(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION)
+void* MemoryPool::calloc(size_t size ALLOC_PARAMS)
{
void* block = allocate(size ALLOC_PASS_ARGS);
memset(block, 0, size);
return block;
}
-void MemPool::deallocate(void* block) FB_NOTHROW
+void MemPool::deallocate(void* block) noexcept
{
releaseMemory(block, false);
}
@@ -2720,7 +2720,7 @@ bool MemPool::validate(char* buf, FB_SIZE_T size)
}
#ifdef MEM_DEBUG
-void MemPool::print_contents(const char* filename, unsigned flags, const char* filter_path) FB_NOTHROW
+void MemPool::print_contents(const char* filename, unsigned flags, const char* filter_path) noexcept
{
FILE* out = os_utils::fopen(filename, "w");
if (!out)
@@ -2731,7 +2731,7 @@ void MemPool::print_contents(const char* filename, unsigned flags, const char* f
}
// This member function can't be const because there are calls to the mutex.
-void MemPool::print_contents(FILE* file, unsigned flags, const char* filter_path) FB_NOTHROW
+void MemPool::print_contents(FILE* file, unsigned flags, const char* filter_path) noexcept
{
bool used_only = flags & MemoryPool::PRINT_USED_ONLY;
@@ -2818,7 +2818,7 @@ MemoryPool& AutoStorage::getAutoMemoryPool()
}
#ifdef LIBC_CALLS_NEW
-void* MemoryPool::globalAlloc(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION)
+void* MemoryPool::globalAlloc(size_t s ALLOC_PARAMS)
{
if (!defaultMemoryManager)
{
@@ -2831,17 +2831,17 @@ void* MemoryPool::globalAlloc(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION)
}
#endif // LIBC_CALLS_NEW
-void MemoryPool::globalFree(void* block) FB_NOTHROW
+void MemoryPool::globalFree(void* block) noexcept
{
MemPool::globalFree(block);
}
-void* MemoryPool::allocate(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION)
+void* MemoryPool::allocate(size_t size ALLOC_PARAMS)
{
return pool->allocate(size ALLOC_PASS_ARGS);
}
-void MemoryPool::deallocate(void* block) FB_NOTHROW
+void MemoryPool::deallocate(void* block) noexcept
{
pool->deallocate(block);
}
@@ -2870,14 +2870,14 @@ void MemoryPool::deletePool(MemoryPool* pool)
delete pool;
}
-void MemoryPool::print_contents(FILE* file, unsigned flags, const char* filter_path) FB_NOTHROW
+void MemoryPool::print_contents(FILE* file, unsigned flags, const char* filter_path) noexcept
{
#ifdef MEM_DEBUG
pool->print_contents(file, flags, filter_path);
#endif
}
-void MemoryPool::print_contents(const char* filename, unsigned flags, const char* filter_path) FB_NOTHROW
+void MemoryPool::print_contents(const char* filename, unsigned flags, const char* filter_path) noexcept
{
#ifdef MEM_DEBUG
pool->print_contents(filename, flags, filter_path);
@@ -2950,21 +2950,21 @@ void AutoStorage::ProbeStack() const
// in a case when we actually need "new" only with file/line information
// this version should be also present as a pair for "delete".
#ifdef DEBUG_GDS_ALLOC
-void* operator new(size_t s) FB_THROW (OOM_EXCEPTION)
+void* operator new(size_t s)
{
return MemoryPool::globalAlloc(s ALLOC_ARGS);
}
-void* operator new[](size_t s) FB_THROW (OOM_EXCEPTION)
+void* operator new[](size_t s)
{
return MemoryPool::globalAlloc(s ALLOC_ARGS);
}
-void operator delete(void* mem) FB_NOTHROW
+void operator delete(void* mem) noexcept
{
MemoryPool::globalFree(mem);
}
-void operator delete[](void* mem) FB_NOTHROW
+void operator delete[](void* mem) noexcept
{
MemoryPool::globalFree(mem);
}
diff --git a/src/common/classes/alloc.h b/src/common/classes/alloc.h
index 65f9afbb8a9..44d9e0ea462 100644
--- a/src/common/classes/alloc.h
+++ b/src/common/classes/alloc.h
@@ -58,20 +58,6 @@
#include <memory.h>
-#define OOM_EXCEPTION std::bad_alloc
-
-#if __cplusplus >= 201103L
-#define FB_NO_THROW_SPECIFIER
-#endif
-
-#ifdef FB_NO_THROW_SPECIFIER
-#define FB_THROW(x)
-#define FB_NOTHROW noexcept
-#else
-#define FB_THROW(x) throw(x)
-#define FB_NOTHROW throw()
-#endif
-
#ifdef DEBUG_GDS_ALLOC
#define FB_NEW new(__FILE__, __LINE__)
#define FB_NEW_POOL(pool) new(pool, __FILE__, __LINE__)
@@ -106,10 +92,10 @@ class MemoryStats
~MemoryStats()
{}
- size_t getCurrentUsage() const FB_NOTHROW { return mst_usage.value(); }
- size_t getMaximumUsage() const FB_NOTHROW { return mst_max_usage; }
- size_t getCurrentMapping() const FB_NOTHROW { return mst_mapped.value(); }
- size_t getMaximumMapping() const FB_NOTHROW { return mst_max_mapped; }
+ size_t getCurrentUsage() const noexcept { return mst_usage.value(); }
+ size_t getMaximumUsage() const noexcept { return mst_max_usage; }
+ size_t getCurrentMapping() const noexcept { return mst_mapped.value(); }
+ size_t getMaximumMapping() const noexcept { return mst_max_mapped; }
private:
// Forbid copying/assignment
@@ -131,7 +117,7 @@ class MemoryStats
size_t mst_max_mapped;
// These methods are thread-safe due to usage of atomic counters only
- void increment_usage(size_t size) FB_NOTHROW
+ void increment_usage(size_t size) noexcept
{
for (MemoryStats* statistics = this; statistics; statistics = statistics->mst_parent)
{
@@ -141,7 +127,7 @@ class MemoryStats
}
}
- void decrement_usage(size_t size) FB_NOTHROW
+ void decrement_usage(size_t size) noexcept
{
for (MemoryStats* statistics = this; statistics; statistics = statistics->mst_parent)
{
@@ -149,7 +135,7 @@ class MemoryStats
}
}
- void increment_mapping(size_t size) FB_NOTHROW
+ void increment_mapping(size_t size) noexcept
{
for (MemoryStats* statistics = this; statistics; statistics = statistics->mst_parent)
{
@@ -159,7 +145,7 @@ class MemoryStats
}
}
- void decrement_mapping(size_t size) FB_NOTHROW
+ void decrement_mapping(size_t size) noexcept
{
for (MemoryStats* statistics = this; statistics; statistics = statistics->mst_parent)
{
@@ -205,21 +191,21 @@ class MemoryPool
#define ALLOC_PASS_ARGS
#endif // DEBUG_GDS_ALLOC
- void* calloc(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION);
+ void* calloc(size_t size ALLOC_PARAMS);
#ifdef LIBC_CALLS_NEW
- static void* globalAlloc(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION);
+ static void* globalAlloc(size_t s ALLOC_PARAMS);
#else
- static void* globalAlloc(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION)
+ static void* globalAlloc(size_t s ALLOC_PARAMS)
{
return defaultMemoryManager->allocate(s ALLOC_PASS_ARGS);
}
#endif // LIBC_CALLS_NEW
- void* allocate(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION);
+ void* allocate(size_t size ALLOC_PARAMS);
- static void globalFree(void* mem) FB_NOTHROW;
- void deallocate(void* mem) FB_NOTHROW;
+ static void globalFree(void* mem) noexcept;
+ void deallocate(void* mem) noexcept;
// Set context pool for current thread of execution
static MemoryPool* setContextPool(MemoryPool* newPool);
@@ -229,7 +215,7 @@ class MemoryPool
// Set statistics group for pool. Usage counters will be decremented from
// previously set group and added to new
- void setStatsGroup(MemoryStats& stats) FB_NOTHROW;
+ void setStatsGroup(MemoryStats& stats) noexcept;
// Initialize and finalize global memory pool
static void init();
@@ -241,9 +227,9 @@ class MemoryPool
// Print out pool contents. This is debugging routine
static const unsigned PRINT_USED_ONLY = 0x01;
static const unsigned PRINT_RECURSIVE = 0x02;
- void print_contents(FILE*, unsigned flags = 0, const char* filter_path = 0) FB_NOTHROW;
+ void print_contents(FILE*, unsigned flags = 0, const char* filter_path = 0) noexcept;
// The same routine, but more easily callable from the debugger
- void print_contents(const char* filename, unsigned flags = 0, const char* filter_path = 0) FB_NOTHROW;
+ void print_contents(const char* filename, unsigned flags = 0, const char* filter_path = 0) noexcept;
public:
struct Finalizer
@@ -298,7 +284,7 @@ class MemoryPool
} // namespace Firebird
-static inline Firebird::MemoryPool* getDefaultMemoryPool() FB_NOTHROW
+static inline Firebird::MemoryPool* getDefaultMemoryPool() noexcept
{
fb_assert(Firebird::MemoryPool::defaultMemoryManager);
return Firebird::MemoryPool::defaultMemoryManager;
@@ -355,36 +341,36 @@ class SubsystemContextPoolHolder : public ContextPoolHolder
using Firebird::MemoryPool;
// operators new and delete
-extern void* operator new(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION);
-extern void* operator new[](size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION);
-extern void operator delete(void* mem ALLOC_PARAMS) FB_NOTHROW;
-extern void operator delete[](void* mem ALLOC_PARAMS) FB_NOTHROW;
+extern void* operator new(size_t s ALLOC_PARAMS);
+extern void* operator new[](size_t s ALLOC_PARAMS);
+extern void operator delete(void* mem ALLOC_PARAMS) noexcept;
+extern void operator delete[](void* mem ALLOC_PARAMS) noexcept;
-inline void* operator new(size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION)
+inline void* operator new(size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS)
{
return pool.allocate(s ALLOC_PASS_ARGS);
}
-inline void* operator new[](size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION)
+inline void* operator new[](size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS)
{
return pool.allocate(s ALLOC_PASS_ARGS);
}
-inline void operator delete(void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS) FB_NOTHROW
+inline void operator delete(void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS) noexcept
{
MemoryPool::globalFree(mem);
}
-inline void operator delete[](void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS) FB_NOTHROW
+inline void operator delete[](void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS) noexcept
{
MemoryPool::globalFree(mem);
}
#if __cplusplus >= 201402L
-inline void operator delete(void* mem, std::size_t s ALLOC_PARAMS) FB_NOTHROW
+inline void operator delete(void* mem, std::size_t s ALLOC_PARAMS) noexcept
{
MemoryPool::globalFree(mem);
}
-inline void operator delete[](void* mem, std::size_t s ALLOC_PARAMS) FB_NOTHROW
+inline void operator delete[](void* mem, std::size_t s ALLOC_PARAMS) noexcept
{
MemoryPool::globalFree(mem);
}
@@ -392,8 +378,8 @@ inline void operator delete[](void* mem, std::size_t s ALLOC_PARAMS) FB_NOTHROW
#ifdef DEBUG_GDS_ALLOC
-extern void operator delete(void* mem) FB_NOTHROW;
-extern void operator delete[](void* mem) FB_NOTHROW;
+extern void operator delete(void* mem) noexcept;
+extern void operator delete[](void* mem) noexcept;
#endif // DEBUG_GDS_ALLOC

View file

@ -1 +1 @@
SHA512 (Firebird-5.0.3.1683-0-source.tar.xz) = 3b1d075ced4dfcf099723f06a8a18ac6821aa9fd3c0c9919f44b4bb7126390436dc1a9f61369f0dd7401af5bbac82dff02edf28555046c89cbe33657e26fd937
SHA512 (Firebird-4.0.0.2496-0.tar.xz) = 110f1e9b245631ba04fb1f3f3fe16209e432157615c5c23046a277f3e6a164a2142c6732e793d9cc6650d65239a0da8bf37a74329134bd006b7d2cb070812bd6

21255
ttmath-abseil.4.0.0.patch Normal file

File diff suppressed because it is too large Load diff