summaryrefslogtreecommitdiffstats
path: root/external/firebird/sanitizer.patch
blob: e727d581e626d02f8a96b619404d00c93a5249eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
--- builds/posix/fbintl.vers
+++ builds/posix/fbintl.vers
@@ -29,3 +29,4 @@
 LD_lookup_texttype
 LD_setup_attributes
 LD_version
+_ZTI*
--- builds/posix/fbplugin.vers
+++ builds/posix/fbplugin.vers
@@ -26,3 +26,4 @@
 #
 
 firebird_plugin
+_ZTI*
--- builds/posix/firebird.vers
+++ builds/posix/firebird.vers
@@ -367,3 +367,4 @@
 
 KEYWORD_stringIsAToken
 KEYWORD_getTokens
+_ZTI*
--- builds/posix/make.defaults
+++ builds/posix/make.defaults
@@ -252,7 +252,7 @@
 # LINKER OPTIONS
 #
 
-UNDEF_PLATFORM = -Wl,--no-undefined
+UNDEF_PLATFORM =
 ifeq ($(TARGET),Debug)
   UNDEF_FLAGS = $(UNDEF_PLATFORM)
 endif
@@ -291,7 +291,7 @@
 LIB_LINK_MAPFILE= -Wl,--version-script,$(1)
 FIREBIRD_LIBRARY_LINK= -L$(LIB) -lfbclient $(MATHLIB)
 
-EXE_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) $(UNDEF_FLAGS) $(LIB_PATH_OPTS) $(LINK_EMPTY_SYMBOLS)
+EXE_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) $(UNDEF_FLAGS) $(LIB_PATH_OPTS)
 LIB_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) -shared
 
 FB_DAEMON = $(BIN)/firebird$(EXEC_EXT)
--- src/common/classes/alloc.cpp
+++ src/common/classes/alloc.cpp
@@ -2535,7 +2535,7 @@
 	const char* myStack = &probeVar;
 	const char* thisLocation = (const char*) this;
 	ptrdiff_t distance = thisLocation - myStack;
-	fb_assert(absVal(distance) < 128 * 1024);
+	//fb_assert(absVal(distance) < 128 * 1024);
 }
 #endif
 
--- src/common/os/posix/mod_loader.cpp
+++ src/common/os/posix/mod_loader.cpp
@@ -88,7 +88,7 @@
 
 ModuleLoader::Module* ModuleLoader::loadModule(const Firebird::PathName& modPath)
 {
-	void* module = dlopen(modPath.nullStr(), FB_RTLD_MODE);
+	void* module = dlopen(modPath.nullStr(), FB_RTLD_MODE | RTLD_GLOBAL);
 	if (module == NULL)
 	{
 #ifdef DEV_BUILD
--- src/jrd/met.epp
+++ src/jrd/met.epp
@@ -1486,10 +1486,11 @@
 			USHORT offset = p[0] | (p[1] << 8);
 			p += 2;
 
-			const Ods::Descriptor* odsDflDesc = (Ods::Descriptor*) p;
-			p = (UCHAR*) (odsDflDesc + 1);
+			Ods::Descriptor odsDflDesc;
+			memcpy(&odsDflDesc, p, sizeof (Ods::Descriptor));
+			p = (UCHAR*) (((Ods::Descriptor*) p) + 1);
 
-			dsc desc = *odsDflDesc;
+			dsc desc = odsDflDesc;
 			desc.dsc_address = const_cast<UCHAR*>(p);
 			EVL_make_value(tdbb, &desc, &format->fmt_defaults[offset], relation->rel_pool);