update to 4.0.3

This commit is contained in:
dillon_chen 2023-08-10 17:56:44 +08:00
parent f078ce37ed
commit 434cc21db1
16 changed files with 1258 additions and 272 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,36 +0,0 @@
From: Michal Kubecek <mkubecek@suse.cz>
Date: Mon, 25 Apr 2016 08:55:36 +0200
Subject: Provide sized global delete operators when compiled in C++14 mode
Patch-mainline: submitted
Git-commit: 038f9fbf559e56032e4cb49eb7ce4c3ead23fda9
References: bsc#964466 CORE-5099
---
src/common/classes/alloc.h | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/common/classes/alloc.h b/src/common/classes/alloc.h
index b1026ce2aac4..fda5bfebb0cc 100644
--- a/src/common/classes/alloc.h
+++ b/src/common/classes/alloc.h
@@ -331,6 +331,16 @@ inline void operator delete[](void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS
MemoryPool::globalFree(mem);
}
+#if __cplusplus >= 201402L
+inline void operator delete(void* mem, std::size_t s ALLOC_PARAMS) throw()
+{
+ MemoryPool::globalFree(mem);
+}
+inline void operator delete[](void* mem, std::size_t s ALLOC_PARAMS) throw()
+{
+ MemoryPool::globalFree(mem);
+}
+#endif
#ifdef DEBUG_GDS_ALLOC
#ifdef __clang__
--
2.8.2

View File

@ -1,16 +1,6 @@
From: Michal Kubecek <mkubecek@suse.cz>
Date: Tue, 12 Jun 2012 14:32:44 +0200
Subject: add pkgconfig files
---
builds/install/arch-specific/linux/misc/fbclient.pc.in | 10 ++++++++++
configure.ac | 1 +
2 files changed, 11 insertions(+)
create mode 100644 builds/install/arch-specific/linux/misc/fbclient.pc.in
diff --git a/builds/install/arch-specific/linux/misc/fbclient.pc.in b/builds/install/arch-specific/linux/misc/fbclient.pc.in
new file mode 100644
index 000000000000..d49fdc5821c5
index 0000000..d49fdc5
--- /dev/null
+++ b/builds/install/arch-specific/linux/misc/fbclient.pc.in
@@ -0,0 +1,10 @@
@ -25,18 +15,14 @@ index 000000000000..d49fdc5821c5
+Cflags: -I${includedir}/firebird
+Libs: -L${libdir} -lfbclient
diff --git a/configure.ac b/configure.ac
index 717f5eccc53d..60b3aaa5b08b 100644
index 0a3de36..922c778 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1200,6 +1200,7 @@ case "$PLATFORM" in
@@ -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-classic@.service:builds/install/arch-specific/linux/firebird-classic.service.in
gen/install/misc/firebird-classic.socket:builds/install/arch-specific/linux/firebird-classic.socket.in
--
2.3.4
gen/install/misc/firebird.service:builds/install/arch-specific/linux/firebird.service.in
],

24
autoconf.patch Normal file
View File

@ -0,0 +1,24 @@
From 3fe8f6510de79689a26868e244840b24dcb19567 Mon Sep 17 00:00:00 2001
From: AlexPeshkoff <alexander.peshkoff@gmail.com>
Date: Wed, 23 Nov 2022 20:30:03 +0300
Subject: [PATCH] Fixed #7394: autoconf 2.72 support
---
configure.ac | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 75af92e862c..800453d25fa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -696,8 +696,9 @@ if test "$STD_EDITLINE" = "true"; then
AC_CHECK_LIB(readline, readline, [READLINE=readline EDITLINE_FLG=Y],
[STD_EDITLINE=false
if test "$EDITLINE_FLG" = "Y"; then
- AC_MSG_WARN([[[--with-system-editline specified, not found. Using bundled editline]]])])))
+ AC_MSG_WARN([[[--with-system-editline specified, not found. Using bundled editline]]])
fi
+ ])))
fi
XE_RESTORE_ENV()

View File

@ -0,0 +1,12 @@
--- 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

@ -4,24 +4,51 @@ Forwarded: no
--- a/extern/cloop/Makefile
+++ b/extern/cloop/Makefile
@@ -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),$
@@ -27,8 +27,8 @@ SRCS_CPP := $(foreach sdir,$(SRC_DIRS),$
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)
+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
-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
ifeq ($(TARGET),release)
ifeq ($(shell uname),FreeBSD)
@@ -94,7 +94,7 @@ $(BIN_DIR)/cloop: \
$(OBJ_DIR)/cloop/Main.o \
| $(BIN_DIR)
- $(LD) $^ -o $@ $(LIBS)
+ $(LD) $(LDFLAGS) $^ -o $@ $(LIBS)
$(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 \

View File

@ -0,0 +1,45 @@
Add missing int return types for main in the configure script.
Implicit ints are a language feature that was removed in C99.
Submitted upstream: <https://github.com/FirebirdSQL/firebird/pull/7407>
diff --git a/configure.ac b/configure.ac
index 05edb5ec9410ff50..0474dc850dfd04bc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1038,7 +1038,7 @@ AC_CHECK_FUNCS(sem_init)
if test "$ac_cv_func_sem_init" = "yes"; then
AC_MSG_CHECKING(for working sem_init())
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <semaphore.h>
- main () {
+ int main () {
sem_t s;
return sem_init(&s,0,0);
}
@@ -1079,7 +1079,7 @@ AC_SYS_LARGEFILE
if test "$ac_cv_sys_file_offset_bits" = "no"; then
AC_MSG_CHECKING(for native large file support)
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <unistd.h>
- main () {
+ int main () {
return !(sizeof(off_t) == 8);
}]])],[ac_cv_sys_file_offset_bits=64; AC_DEFINE(_FILE_OFFSET_BITS,64)
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)],[])
@@ -1126,7 +1126,7 @@ dnl EKU: try to determine the alignment of long and double
dnl replaces FB_ALIGNMENT and FB_DOUBLE_ALIGN in src/jrd/common.h
AC_MSG_CHECKING(alignment of long)
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <semaphore.h>
-main () {
+int main () {
struct s {
char a;
union { long long x; sem_t y; } b;
@@ -1137,7 +1137,7 @@ AC_MSG_RESULT($ac_cv_c_alignment)
AC_DEFINE_UNQUOTED(FB_ALIGNMENT, $ac_cv_c_alignment, [Alignment of long])
AC_MSG_CHECKING(alignment of double)
-AC_RUN_IFELSE([AC_LANG_SOURCE([[main () {
+AC_RUN_IFELSE([AC_LANG_SOURCE([[int main () {
struct s {
char a;
double b;

View File

@ -1 +0,0 @@
d /var/run/firebird 0775 firebird firebird -

14
firebird.service Normal file
View File

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

View File

@ -1,72 +1,171 @@
%global ver 3.0.10
%global rev 33601
%global ver 4.0.3
%global rev 2975
Name: firebird
Version: %{ver}.%{rev}
Release: 4
Release: 1
Summary: SQL relational database management system
License: Interbase
URL: http://www.firebirdsql.org/
Source0: https://github.com/FirebirdSQL/firebird/releases/download/v%{ver}/Firebird-%{ver}.%{rev}-0.tar.bz2
Source0: https://github.com/FirebirdSQL/firebird/releases/download/v%{ver}/Firebird-%{ver}.%{rev}-0.tar.xz
Source1: firebird-logrotate
Source2: firebird.conf
Source2: firebird.service
Source3: fb_config
Patch0000: add-pkgconfig-files.patch
Patch0001: Provide-sized-global-delete-operators-when-compiled.patch
Patch0002: obsolete-syslogd.target.patch
Patch0003: honour-buildflags.patch
Patch0004: no-copy-from-icu.patch
Patch0005: cloop-honour-build-flags.patch
Patch0007: 0001-Port-to-RISC-V-64-bit-riscv64.patch
Patch0008: 0001-add-loongarch64-support-for-Firebird.patch
Patch0009: 0002-Modify-PROD_FLAGS-and-DEV_FLAGS-parameters-for-loongarch64.patch
Patch0001: no-copy-from-icu.patch
Patch0002: cloop-honour-build-flags.patch
# from upstream
Patch0003: c++17.patch
Patch0004: noexcept.patch
Patch0005: autoconf.patch
Patch0006: btyacc-honour-build-flags.patch
Patch0007: firebird-configure-c99.patch
#Patch0008: 0001-Port-to-RISC-V-64-bit-riscv64.patch
#Patch0009: 0001-add-loongarch64-support-for-Firebird.patch
#Patch0010: 0002-Modify-PROD_FLAGS-and-DEV_FLAGS-parameters-for-loongarch64.patch
BuildRequires: autoconf automake libtommath-devel libtool ncurses-devel libicu-devel
BuildRequires: libedit-devel gcc-c++ libstdc++-static systemd-units chrpath zlib-devel procmail
BuildRequires: chrpath
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtommath-devel
BuildRequires: libtool
BuildRequires: ncurses-devel
BuildRequires: libicu-devel
BuildRequires: libedit-devel
BuildRequires: gcc-c++
BuildRequires: libstdc++-static
BuildRequires: systemd-units
BuildRequires: chrpath
BuildRequires: zlib-devel
BuildRequires: procmail
BuildRequires: make
BuildRequires: libtomcrypt-devel
BuildRequires: unzip
BuildRequires: sed
Requires(post): systemd-units
Requires(preun):systemd-units
Requires(postun):systemd-units
Requires: logrotate
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
Provides: firebird-utils = %{version}-%{release} libfbclient2 = %{version}-%{release} libib-util = %{version}-%{release}
Obsoletes: firebird-utils < %{version}-%{release} libfbclient2 < %{version}-%{release} libib-util < %{version}-%{release}
Obsoletes: firebird-arch < 3.0 firebird-filesystem < 3.0 firebird-classic-common < 3.0 firebird-classic < 3.0
Obsoletes: firebird-superclassic < 3.0 firebird-superserver < 3.0 firebird-libfbclient < 3.0 firebird-libfbembed < 3.0
Conflicts: firebird-arch < 3.0 firebird-filesystem < 3.0 firebird-classic-common < 3.0 firebird-classic < 3.0
Conflicts: firebird-superclassic < 3.0 firebird-superserver < 3.0 firebird-libfbclient < 3.0
%description
Firebird is an open-source SQL relational database management system that
runs on Linux, Microsoft Windows, macOS and several Unix platforms.
Firebird works excellently under concurrency. It has high performance,
and powerful language support for stored procedures and triggers.
This package also contains utility functions used by User-Defined Functions (UDF)
for memory management etc and shared client library for Firebird SQL server.
Firebird is a relational database offering many ANSI SQL standard features
that runs on Linux, Windows, MacOS and a variety of Unix platforms.
Firebird offers excellent concurrency, high performance, and powerful
language support for stored procedures and triggers. It has been used
in production systems, under a variety of names, since 1981.
%package devel
Requires: firebird = %{version}-%{release} pkgconfig
%package devel
Requires: %{name} = %{version}-%{release}
Requires: libfbclient2-devel = %{version}-%{release}
Summary: UDF support library for Firebird SQL server
Provides: libfbclient2-devel = %{version}-%{release} firebird-examples = %{version}-%{release}
Obsoletes: libfbclient2-devel < %{version}-%{release} firebird-examples < %{version}-%{release}
%description devel
%description devel
This package is needed for development of client applications and user
defined functions (UDF) for Firebird SQL server. It also contains development
files for Firebird SQL server client library.
defined functions (UDF) for Firebird SQL server.
%package help
Firebird is a relational database offering many ANSI SQL standard features
that runs on Linux, Windows, MacOS and a variety of Unix platforms.
Firebird offers excellent concurrency, high performance, and powerful
language support for stored procedures and triggers. It has been used
in production systems, under a variety of names, since 1981.
%package -n libib-util
Summary: Firebird SQL UDF support library
%description -n libib-util
libib_util contains utility functions used by
User-Defined Functions (UDF) for memory management etc.
Firebird is a relational database offering many ANSI SQL standard features
that runs on Linux, Windows, MacOS and a variety of Unix platforms.
Firebird offers excellent concurrency, high performance, and powerful
language support for stored procedures and triggers. It has been used
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.
Firebird is a relational database offering many ANSI SQL standard features
that runs on Linux, Windows, MacOS and a variety of Unix platforms.
Firebird offers excellent concurrency, high performance, and powerful
language support for stored procedures and triggers. It has been used
in production systems, under a variety of names, since 1981.
%package -n libfbclient2-devel
Summary: Development libraries and headers for Firebird SQL server
Requires: %{name}-devel = %{version}-%{release}
Requires: libfbclient2 = %{version}-%{release}
Requires: pkgconfig
%description -n libfbclient2-devel
Development files for Firebird SQL server client library.
Firebird is a relational database offering many ANSI SQL standard features
that runs on Linux, Windows, MacOS and a variety of Unix platforms.
Firebird offers excellent concurrency, high performance, and powerful
language support for stored procedures and triggers. It has been used
in production systems, under a variety of names, since 1981.
%package help
Requires: %{name} = %{version}-%{release}
Summary: Documentation for Firebird SQL server
BuildArch: noarch
Provides: firebird-doc = %{version}-%{release}
Obsoletes: firebird-doc < %{version}-%{release}
%description help
%description help
Documentation for Firebird SQL server.
Firebird is a relational database offering many ANSI SQL standard features
that runs on Linux, Windows, MacOS and a variety of Unix platforms.
Firebird offers excellent concurrency, high performance, and powerful
language support for stored procedures and triggers. It has been used
in production systems, under a variety of names, since 1981.
%package utils
Requires: libfbclient2 = %{version}-%{release}
Summary: Firebird SQL user utilities
%description utils
Firebird SQL user utilities.
Firebird is a relational database offering many ANSI SQL standard features
that runs on Linux, Windows, MacOS and a variety of Unix platforms.
Firebird offers excellent concurrency, high performance, and powerful
language support for stored procedures and triggers. It has been used
in production systems, under a variety of names, since 1981.
%prep
%autosetup -n Firebird-%{ver}.%{rev}-0 -p1
@ -74,139 +173,167 @@ Documentation for Firebird SQL server.
export CFLAGS="%{optflags} -fno-strict-aliasing"
export CXXFLAGS="${CFLAGS} -fno-delete-null-pointer-checks"
NOCONFIGURE=1 ./autogen.sh
%configure --prefix=%{_prefix} --disable-binreloc --with-system-editline --with-fbbin=%{_bindir} \
--with-fbsbin=%{_sbindir} --with-fbconf=%{_sysconfdir}/firebird --with-fblib=%{_libdir} \
--with-fbinclude=%{_includedir}/firebird --with-fbdoc=%{_defaultdocdir}/firebird \
--with-fbudf=%{_libdir}/firebird/udf --with-fbsample=%{_defaultdocdir}/firebird/sample \
--with-fbsample-db=%{_localstatedir}/lib/firebird/data/ --with-fbhelp=%{_localstatedir}/lib/firebird/system/ \
--with-fbintl=%{_libdir}/firebird/intl --with-fbmisc=%{_datadir}/firebird/misc \
--with-fbsecure-db=%{_localstatedir}/lib/firebird/secdb/ --with-fbmsg=%{_localstatedir}/lib/firebird/system/ \
--with-fblog=%{_localstatedir}/log/firebird --with-fbglock=%{_var}/run/firebird \
--with-fbplugins=%{_libdir}/firebird/plugins
%configure --disable-rpath --prefix=%{_prefix} \
--with-system-editline \
--with-fbbin=%{_bindir} --with-fbsbin=%{_sbindir} \
--with-fbconf=%{_sysconfdir}/%{name} \
--with-fblib=%{_libdir} --with-fbinclude=%{_includedir} \
--with-fbdoc=%{_defaultdocdir}/%{name} \
--with-fbsample=%{_defaultdocdir}/%{name}/sample \
--with-fbsample-db=%{_localstatedir}/lib/%{name}/data \
--with-fbhelp=%{_localstatedir}/lib/%{name}/system \
--with-fbintl=%{_libdir}/%{name}/intl \
--with-fbmisc=%{_datadir}/%{name}/misc \
--with-fbsecure-db=%{_localstatedir}/lib/%{name}/secdb \
--with-fbmsg=%{_localstatedir}/lib/%{name}/system \
--with-fblog=%{_localstatedir}/log/%{name} \
--with-fbglock=%{_rundir}/%{name} \
--with-fbplugins=%{_libdir}/%{name}/plugins \
--with-fbtzdata=%{_localstatedir}/lib/%{name}/tzdata
%make_build
make %{?_smp_mflags}
cd gen
make -f Makefile.install buildRoot
chmod -R u+w buildroot%{_docdir}/firebird
sed -i '/linkFiles "/d' ./install/makeInstallImage.sh
./install/makeInstallImage.sh
chmod -R u+w buildroot%{_docdir}/%{name}
%install
chmod u+rw,a+rx gen/buildroot/usr/include/firebird/firebird/impl
chmod u+rw,a+rx gen/buildroot/%{_includedir}/firebird/impl
cp -r gen/buildroot/* ${RPM_BUILD_ROOT}/
install -d ${RPM_BUILD_ROOT}%{_libdir}/pkgconfig
mkdir -p ${RPM_BUILD_ROOT}%{_libdir}/pkgconfig
cp -v gen/install/misc/*.pc ${RPM_BUILD_ROOT}%{_libdir}/pkgconfig/
cd ${RPM_BUILD_ROOT}
rm -vf .%{_sbindir}/*.sh && mv -v .%{_sbindir}/fb_config .%{_libdir}/
install -pm 0755 %{SOURCE3} %{buildroot}%{_sbindir}/fb_config
rm -vf .%{_includedir}/firebird/perf.h .%{_includedir}/*.h .%{_libdir}/libicu*.so
chmod -R u+w .%{_docdir}/firebird
rm -vf .%{_datadir}/firebird/misc/{firebird.init.*,firebird.xinetd,rc.config.firebird}
mv -v .%{_sysconfdir}/firebird/{README,WhatsNew} .%{_docdir}/firebird/
mv -v .%{_sysconfdir}/firebird/{IDPLicense,IPLicense}.txt .%{_docdir}/firebird/
mv -v .%{_bindir}/gstat{,-fb} && mv -v .%{_bindir}/isql{,-fb}
rm -vf .%{_sbindir}/*.sh
mv -v .%{_sbindir}/fb_config .%{_libdir}/
install -p -m 0755 %{SOURCE3} %{buildroot}%{_sbindir}/fb_config
rm -vf .%{_includedir}/perf.h
rm -vf .%{_libdir}/libicu*.so
chmod -R u+w .%{_docdir}/%{name}
mv -v .%{_datadir}/%{name}/misc/upgrade/udf/* .%{_docdir}/%{name}/
rm -rvf .%{_datadir}/%{name}/misc
mv -v .%{_sysconfdir}/%{name}/README.md .%{_sysconfdir}/%{name}/CHANGELOG.md \
.%{_docdir}/%{name}/
mv -v .%{_sysconfdir}/%{name}/IDPLicense.txt .%{_docdir}/%{name}/
mv -v .%{_sysconfdir}/%{name}/IPLicense.txt .%{_docdir}/%{name}/
mv -v .%{_bindir}/gstat .%{_bindir}/gstat-fb
mv -v .%{_bindir}/isql .%{_bindir}/isql-fb
rm -rvf .%{_defaultdocdir}/%{name}/sample/prebuilt
install -d .%{_localstatedir}/log/firebird .%{_sysconfdir}/logrotate.d
echo 1 > .%{_localstatedir}/log/firebird/firebird.log
sed "s@firebird.log@%{_localstatedir}/log/firebird/firebird.log@g" %{SOURCE1} > .%{_sysconfdir}/logrotate.d/firebird
mkdir -p .%{_localstatedir}/log/%{name}
mkdir -p .%{_sysconfdir}/logrotate.d
echo 1 > .%{_localstatedir}/log/%{name}/%{name}.log
sed "s@%{name}.log@%{_localstatedir}/log/%{name}/%{name}.log@g" %{SOURCE1} > .%{_sysconfdir}/logrotate.d/%{name}
install -d .%{_tmpfilesdir} && cp %{SOURCE2} .%{_tmpfilesdir}/
install -d .%{_unitdir}
cp .%{_datadir}/firebird/misc/firebird-superserver.service .%{_unitdir}/firebird-superserver.service
# remove rpath info
for ff in $(find %{buildroot}/ -executable -type f -exec file '{}' ';' | grep "\<ELF\>" | awk -F ':' '{print $1}')
do
if [ ! -u "$ff" ]; then
if [ -w "$ff" ]; then
chrpath -d $ff
fi
fi
done
# add rpath path /usr/lib/systemd in ld.so.cond.d
mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d
echo "/usr/lib/systemd" > %{buildroot}%{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf
mkdir -p .%{_unitdir}
cp -f %{SOURCE2} .%{_unitdir}/%{name}.service
%pre
%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}
getent group firebird || /usr/sbin/groupadd -r firebird
getent passwd firebird >/dev/null || /usr/sbin/useradd -d / -g firebird -s /sbin/nologin -r firebird
oldLine=$(grep "^gds_db" /etc/services)
# Add gds_db to /etc/services if needed
FileName=/etc/services
newLine="gds_db 3050/tcp # Firebird SQL Database Remote Protocol"
oldLine=`grep "^gds_db" $FileName`
if [ -z "$oldLine" ]; then
echo "gds_db 3050/tcp # Firebird SQL Database Remote Protocol" >> /etc/services
echo $newLine >> $FileName
fi
%post
/sbin/ldconfig
systemd-tmpfiles --create %{_tmpfilesdir}/firebird.conf
%systemd_post firebird-superserver.service
%post
%systemd_post firebird.service
%postun
/sbin/ldconfig
%systemd_postun_with_restart firebird-superserver.service
%postun
%systemd_postun_with_restart firebird.service
%preun
%systemd_preun firebird-superserver.service
%preun
%systemd_preun firebird.service
%files
%{_docdir}/firebird/IDPLicense.txt
%{_docdir}/firebird/IPLicense.txt
%{_docdir}/%{name}/IDPLicense.txt
%{_docdir}/%{name}/IPLicense.txt
%{_bindir}/fbtracemgr
%{_sbindir}/firebird
%{_sbindir}/fbguard
%{_sbindir}/fb_lock_print
%dir %{_sysconfdir}/firebird
%config(noreplace) %{_sysconfdir}/firebird/*.conf
%dir %{_libdir}/firebird
%dir %{_datadir}/firebird
%{_libdir}/firebird/*
%{_datadir}/firebird/misc
%dir %{_sysconfdir}/%{name}
%config(noreplace) %{_sysconfdir}/%{name}/databases.conf
%config(noreplace) %{_sysconfdir}/%{name}/fbtrace.conf
%config(noreplace) %{_sysconfdir}/%{name}/firebird.conf
%config(noreplace) %{_sysconfdir}/%{name}/plugins.conf
%config(noreplace) %{_sysconfdir}/%{name}/replication.conf
%dir %{_libdir}/%{name}
%dir %{_datadir}/%{name}
%{_libdir}/%{name}/intl
%{_libdir}/%{name}/plugins
%dir %{_localstatedir}/lib/firebird
%dir %attr(0700,firebird,firebird) %{_localstatedir}/lib/firebird/secdb
%dir %attr(0700,firebird,firebird) %{_localstatedir}/lib/firebird/data
%dir %attr(0755,firebird,firebird) %{_localstatedir}/lib/firebird/system
%attr(0600,firebird,firebird) %config(noreplace) %{_localstatedir}/lib/firebird/secdb/security3.fdb
%attr(0644,firebird,firebird) %{_localstatedir}/lib/firebird/system/help.fdb
%attr(0644,firebird,firebird) %{_localstatedir}/lib/firebird/system/firebird.msg
%ghost %dir %attr(0775,firebird,firebird) %{_var}/run/firebird
%ghost %attr(0644,firebird,firebird) %{_var}/run/firebird/fb_guard
%attr(0644,root,root) %{_tmpfilesdir}/firebird.conf
%dir %{_localstatedir}/log/firebird
%config(noreplace) %attr(0664,firebird,firebird) %{_localstatedir}/log/firebird/firebird.log
%config(noreplace) %attr(0644,root,root) %{_sysconfdir}/logrotate.d/firebird
%config(noreplace) %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf
%dir %{_localstatedir}/lib/%{name}
%dir %attr(0700,%{name},%{name}) %{_localstatedir}/lib/%{name}/secdb
%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/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}
%ghost %attr(0644,%{name},%{name}) /run/%{name}/fb_guard
%dir %{_localstatedir}/log/%{name}
%config(noreplace) %attr(0664,%{name},%{name}) %{_localstatedir}/log/%{name}/%{name}.log
%config(noreplace) %attr(0644,root,root) %{_sysconfdir}/logrotate.d/%{name}
%defattr(0755,root,root,0755)
%{_unitdir}/firebird-superserver.service
%{_libdir}/libfbclient.so.*
%{_libdir}/libib_util.so
%{_bindir}/*
%attr(0644,root,root) %{_unitdir}/%{name}.service
%files devel
%{_includedir}/firebird
%files devel
%{_includedir}/*.h
%{_includedir}/%{name}
%{_libdir}/fb_config
%{_sbindir}/fb_config
%files -n libfbclient2
%{_libdir}/libfbclient.so.*
%files -n libfbclient2-devel
%{_libdir}/libfbclient.so
%{_libdir}/pkgconfig/fbclient.pc
%{_docdir}/firebird/sample
%attr(0600,firebird,firebird) %{_localstatedir}/lib/firebird/data/employee.fdb
%files help
%{_docdir}/firebird
%exclude %{_docdir}/firebird/sample
%exclude %{_docdir}/firebird/IDPLicense.txt
%exclude %{_docdir}/firebird/IPLicense.txt
%files -n libib-util
%{_libdir}/libib_util.so
%files help
%{_docdir}/%{name}
%exclude %{_docdir}/%{name}/IDPLicense.txt
%exclude %{_docdir}/%{name}/IPLicense.txt
%attr(0600,firebird,firebird) %{_localstatedir}/lib/%{name}/data/employee.fdb
%files utils
%{_bindir}/gstat-fb
%{_bindir}/fbsvcmgr
%{_bindir}/gbak
%{_bindir}/gfix
%{_bindir}/gpre
%{_bindir}/gsec
%{_bindir}/isql-fb
%{_bindir}/nbackup
%{_bindir}/qli
%{_bindir}/gsplit
%changelog
* Thu Aug 10 2023 dillon chen <dillon.chen@gmail.com> - 4.0.3.2975-1
- Update to 4.0.3.2975
* Thu May 25 2023 Wenlong Zhang <zhangwenlong@loongson.cn> - 3.0.10.33601-4
- Modify PROD_FLAGS and DEV_FLAGS parameters for loongarch64
@ -240,3 +367,4 @@ systemd-tmpfiles --create %{_tmpfilesdir}/firebird.conf
* Mon Dec 2 2019 lihao <lihao129@huawei.com> - 3.0.3.32900-5
- Package Init

View File

@ -1,43 +0,0 @@
Description: improved support for build flags
The first change makes linking makeHeader use the same CPP/CXX/LD flags as the
rest of the sources.
The second change stops btyacc/Makefile from ignoring CFLAGS from the
environment.
Both changes help compile/link with default hardening flags.
Author: Damyan Ivanov <dmn@debian.org>
--- a/builds/posix/Makefile.in
+++ b/builds/posix/Makefile.in
@@ -602,7 +602,7 @@ MAKE_HEADER_Src = $(addprefix $(SRC_ROOT
MAKE_HEADER_Bin = ./makeHeader
$(INCLUDE_DEST)/ibase.h: $(SRC_IBASE_ExtraFiles)
- $(STATICEXE_LINK) -o $(MAKE_HEADER_Bin) $(MAKE_HEADER_Src)
+ $(STATICEXE_LINK) $(EXE_LINK_OPTIONS) $(LINK_OPTS) $(CPPFLAGS) -o $(MAKE_HEADER_Bin) -fPIE $(MAKE_HEADER_Src)
$(CP) $^ .
$(MAKE_HEADER_Bin) <ibase.h >$@
$(RM) -f ibase.h
--- a/extern/btyacc/Makefile
+++ b/extern/btyacc/Makefile
@@ -42,7 +42,7 @@ OTHERS = README README.BYACC \
all: $(PROGRAM)
$(PROGRAM): $(OBJS) $(LIBS)
- $(CC) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LIBS)
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LIBS)
clean:; rm -f $(OBJS)
--- a/builds/posix/make.defaults
+++ b/builds/posix/make.defaults
@@ -166,8 +166,8 @@ LD = @CXX@
LIB_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS)
STATICLIB_LINK = $(AR) crus
-EXE_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS)
-STATICEXE_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS)
+EXE_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS) $(LDFLAGS)
+STATICEXE_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS) $(LDFLAGS)
LINK_LIBS = @LIBS@
STATICLINK_LIBS = @LIBS@

View File

@ -1,15 +1,51 @@
Description: Link isql with ICU instead of embedding part of it in the source
Author: Damyan Ivanov <dmn@debian.org>
--- a/src/isql/isql.epp
+++ b/src/isql/isql.epp
@@ -173,34 +173,6 @@ const char* UNKNOWN = "*unknown*";
namespace IcuUtil
{
- // Duplicate from ICU to not need to link ISQL with it. It's used by U8_NEXT_UNSAFE.
- static const uint8_t utf8_countTrailBytes[256] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 3, 3, 3, 3,
- 3, 3, 3, /* illegal in Unicode */
- 4, 4, 4, 4, /* illegal in Unicode */
- 5, 5, /* illegal in Unicode */
- 0, 0 /* illegal bytes 0xfe and 0xff */
- };
-
// 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
@@ -425,7 +425,8 @@ $(GSTAT): $(GSTAT_Objects) $(COMMON_LIB
@@ -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) $(LINK_LIBS)
+ $(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) \
+ $(LIBEDITLINE) $(LINK_LIBS) $(ICU_LIBS)
- $(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,14 +0,0 @@
Description: remove reference to obsolete syslog.target
Syslog is socket-activated, so no need to declare a dependency on it
Author: Damyan Ivanov <dmn@debian.org>
--- a/builds/install/arch-specific/linux/firebird-superserver.service.in
+++ b/builds/install/arch-specific/linux/firebird-superserver.service.in
@@ -1,6 +1,6 @@
[Unit]
Description=Firebird Database Server ( SuperServer )
-After=syslog.target network.target
+After=network.target
Conflicts=firebird-classic.socket
[Service]