1
0
Fork 0
libreoffice/external/firebird/asan.patch
Daniel Baumann 8e63e14cf6
Adding upstream version 4:25.2.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 16:20:04 +02:00

252 lines
7.3 KiB
Diff

--- builds/posix/Makefile.in
+++ builds/posix/Makefile.in
@@ -323,8 +323,8 @@
metadata.fdb: $(RUN_ISQL) $(SRC_ROOT)/dbs/metadata.sql
-$(RM) $@
- $(RUN_ISQL) -q -i $(SRC_ROOT)/dbs/metadata.sql
- $(RUN_GFIX) -mode read_only $@
+ $(LIBO_TUNNEL_LIBRARY_PATH) $(RUN_ISQL) -q -i $(SRC_ROOT)/dbs/metadata.sql
+ $(LIBO_TUNNEL_LIBRARY_PATH) $(RUN_GFIX) -mode read_only $@
$(CHMOD) 0444 $@
$(HELP_FDB): help.fdb
@@ -333,7 +333,7 @@
$(CHMOD) 0444 $@
help.fdb: $(BLD_ROOT)/misc/help.gbak
- $(RUN_GBAK) -MODE read_only -R $< $@
+ $(LIBO_TUNNEL_LIBRARY_PATH) $(RUN_GBAK) -MODE read_only -R $< $@
$(CHMOD) 0444 $@
$(SECURITY_FDB): security.fdb
@@ -343,18 +343,18 @@
security.fdb: $(SRC_ROOT)/dbs/security.sql
-$(RM) $@
-$(RM) $(SECURITY_TMP)
- echo create database \'$(SECURITY_TMP)\'\; | $(RUN_ISQL)
- $(RUN_GFIX) -write async $(SECURITY_TMP)
- $(RUN_ISQL) -i $^ $(SECURITY_TMP)
+ echo create database \'$(SECURITY_TMP)\'\; | $(LIBO_TUNNEL_LIBRARY_PATH) $(RUN_ISQL)
+ $(LIBO_TUNNEL_LIBRARY_PATH) $(RUN_GFIX) -write async $(SECURITY_TMP)
+ $(LIBO_TUNNEL_LIBRARY_PATH) $(RUN_ISQL) -i $^ $(SECURITY_TMP)
$(CHMOD) a=rw $(SECURITY_TMP)
$(CP) $(SECURITY_TMP) $@
- $(RUN_GFIX) -write sync $@
+ $(LIBO_TUNNEL_LIBRARY_PATH) $(RUN_GFIX) -write sync $@
msg.timestamp: $(MSG_FILES)
-$(RM) msg.fdb
- echo create database \'msg.fdb\'\; | $(RUN_ISQL)
- $(RUN_GFIX) -write async msg.fdb
- for sql in $(MSG_FILES); do (echo $$sql; $(RUN_ISQL) -i $$sql msg.fdb) || exit; done
+ echo create database \'msg.fdb\'\; | $(LIBO_TUNNEL_LIBRARY_PATH) $(RUN_ISQL)
+ $(LIBO_TUNNEL_LIBRARY_PATH) $(RUN_GFIX) -write async msg.fdb
+ for sql in $(MSG_FILES); do (echo $$sql; $(LIBO_TUNNEL_LIBRARY_PATH) $(RUN_ISQL) -i $$sql msg.fdb) || exit; done
$(TOUCH) $@
@@ -560,7 +560,7 @@
message_file: $(FIREBIRD_MSG)
$(FIREBIRD_MSG): $(BUILD_FILE) msg.timestamp
- $(BUILD_FILE) -d msg.fdb -f $@
+ $(LIBO_TUNNEL_LIBRARY_PATH) $(BUILD_FILE) -d msg.fdb -f $@
$(CHMOD_6) $@
$(BUILD_FILE): $(BUILD_Objects) $(COMMON_LIB)
--- builds/posix/Makefile.in.examples
+++ builds/posix/Makefile.in.examples
@@ -123,8 +123,8 @@
$(EMPLOYEE_DB): $(EXAMPLES_DEST)/empbuild$(EXEC_EXT) $(INPUT_Sources) $(EXAMPLES_DEST)/isql$(EXEC_EXT)
-$(RM) $(EMPLOYEE_DB)
- ./empbuild $(EMPLOYEE_DB)
- $(GFIX) -write sync $(EMPLOYEE_DB)
+ $(LIBO_TUNNEL_LIBRARY_PATH) ./empbuild $(EMPLOYEE_DB)
+ $(LIBO_TUNNEL_LIBRARY_PATH) $(GFIX) -write sync $(EMPLOYEE_DB)
-$(CHMOD_6) $(EMPLOYEE_DB)
# To get past the fact isql is called from the programs, we create a local link in this directory
@@ -140,7 +140,7 @@
$(EXAMPLES_DEST)/empbuild.fdb : $(EXAMPLES_DEST)/empddl.sql $(EXAMPLES_DEST)/empbld.sql $(EXAMPLES_DEST)/isql$(EXEC_EXT)
-$(RM) $(EXAMPLES_DEST)/empbuild.fdb
- $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i empbld.sql
+ $(LIBO_TUNNEL_LIBRARY_PATH) $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i empbld.sql
# The chain for intlemp.fdb is the same a script file to create an empty database
# to allow a .e program to be compiled, to then create and populate with data
@@ -158,7 +158,7 @@
$(EXAMPLES_DEST)/intlbuild.fdb : $(EXAMPLES_DEST)/intlddl.sql $(EXAMPLES_DEST)/intlbld.sql $(EXAMPLES_DEST)/isql$(EXEC_EXT)
-$(RM) intlbuild.fdb
- $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i intlbld.sql
+ $(LIBO_TUNNEL_LIBRARY_PATH) $(EXAMPLES_DEST)/isql$(EXEC_EXT) -i intlbld.sql
$(EXAMPLES_DEST)/%.sql: $(EXAMPLES_SRC)/empbuild/%.sql
--- builds/posix/make.rules
+++ builds/posix/make.rules
@@ -68,17 +68,17 @@
.SUFFIXES: .c .e .epp .cpp
.e.c:
- $(GPRE_CURRENT) $(GPRE_FLAGS) $< $@
+ $(LIBO_TUNNEL_LIBRARY_PATH) $(GPRE_CURRENT) $(GPRE_FLAGS) $< $@
$(OBJ)/jrd/%.cpp: $(SRC_ROOT)/jrd/%.epp
- $(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $(firstword $<) $@
+ $(LIBO_TUNNEL_LIBRARY_PATH) $(GPRE_CURRENT) $(JRD_GPRE_FLAGS) $(firstword $<) $@
$(OBJ)/isql/%.cpp: $(SRC_ROOT)/isql/%.epp
- $(GPRE_CURRENT) $(ISQL_GPRE_FLAGS) $< $@
+ $(LIBO_TUNNEL_LIBRARY_PATH) $(GPRE_CURRENT) $(ISQL_GPRE_FLAGS) $< $@
$(OBJ)/%.cpp: $(SRC_ROOT)/%.epp
- $(GPRE_CURRENT) $(GPRE_FLAGS) $(firstword $<) $@
+ $(LIBO_TUNNEL_LIBRARY_PATH) $(GPRE_CURRENT) $(GPRE_FLAGS) $(firstword $<) $@
.SUFFIXES: .lo .o .cpp .c
--- src/common/classes/alloc.cpp
+++ src/common/classes/alloc.cpp
@@ -2187,7 +2187,7 @@
void* MemPool::allocRaw(size_t size)
{
-#ifndef USE_VALGRIND
+#if !(defined USE_VALGRIND || defined USE_ASAN)
if (size == DEFAULT_ALLOCATION)
{
MutexLockGuard guard(*cache_mutex, "MemPool::allocRaw");
@@ -2267,7 +2267,7 @@
void MemPool::releaseRaw(bool destroying, void* block, size_t size, bool use_cache) throw ()
{
-#ifndef USE_VALGRIND
+#if !(defined USE_VALGRIND || defined USE_ASAN)
if (use_cache && (size == DEFAULT_ALLOCATION))
{
MutexLockGuard guard(*cache_mutex, "MemPool::releaseRaw");
@@ -2277,7 +2277,7 @@
return;
}
}
-#else
+#elif defined USE_VALGRIND
// Set access protection for block to prevent memory from deleted pool being accessed
int handle = /* //VALGRIND_MAKE_NOACCESS */ VALGRIND_MAKE_MEM_DEFINED(block, size);
--- src/common/classes/alloc.h
+++ src/common/classes/alloc.h
@@ -295,40 +295,60 @@
// operators new and delete
+#if !defined USE_ASAN
inline void* operator new(size_t s ALLOC_PARAMS)
{
return MemoryPool::globalAlloc(s ALLOC_PASS_ARGS);
}
inline void* operator new[](size_t s ALLOC_PARAMS)
{
return MemoryPool::globalAlloc(s ALLOC_PASS_ARGS);
}
+#endif
inline void* operator new(size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS)
{
+#if defined USE_ASAN
+ return operator new(s);
+#else
return pool.allocate(s ALLOC_PASS_ARGS);
+#endif
}
inline void* operator new[](size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS)
{
+#if defined USE_ASAN
+ return operator new[](s);
+#else
return pool.allocate(s ALLOC_PASS_ARGS);
+#endif
}
+#if !defined USE_ASAN
inline void operator delete(void* mem ALLOC_PARAMS) throw()
{
MemoryPool::globalFree(mem);
}
inline void operator delete[](void* mem ALLOC_PARAMS) throw()
{
MemoryPool::globalFree(mem);
}
+#endif
inline void operator delete(void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS) throw()
{
+#if defined USE_ASAN
+ return operator delete(mem);
+#else
MemoryPool::globalFree(mem);
+#endif
}
inline void operator delete[](void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS) throw()
{
+#if defined USE_ASAN
+ return operator delete[](mem);
+#else
MemoryPool::globalFree(mem);
+#endif
}
#ifdef DEBUG_GDS_ALLOC
--- src/include/firebird.h
+++ src/include/firebird.h
@@ -38,8 +38,17 @@
#include "gen/autoconfig.h"
#endif
+#if defined __clang__
+//#if __has_feature(address_sanitizer)
+#define USE_ASAN
+//#endif
+#endif
+#if defined __SANITIZE_ADDRESS__
+#define USE_ASAN
+#endif
+
// Using our debugging code is pointless when we may use Valgrind features
-#if defined(DEV_BUILD) && !defined(USE_VALGRIND)
+#if defined(DEV_BUILD) && !(defined(USE_VALGRIND) || defined(USE_ASAN))
#define DEBUG_GDS_ALLOC
#endif
--- src/jrd/SimilarToMatcher.h
+++ src/jrd/SimilarToMatcher.h
@@ -338,7 +338,7 @@
private:
static const unsigned INCREASE_FACTOR = 50;
unsigned size;
- AutoPtr<UCHAR> data;
+ AutoPtr<UCHAR, ArrayDelete> data;
T* end;
};
#endif // RECURSIVE_SIMILAR
--- configure.orig 2018-06-03 17:44:50.152951348 +0200
+++ configure 2018-06-03 17:45:11.708907807 +0200
@@ -18479,11 +18479,11 @@
#ifdef __cplusplus
extern "C"
#endif
-char dlopen ();
+char dlsym ();
int
main ()
{
-return dlopen ();
+return dlsym ();
;
return 0;
}