#At file:///D:/work/mysql/bzr/mysql-5.1-wtf/
2614 Reggie Burnett 2008-07-17
(no message)
modified:
CMakeLists.txt
libmysqld/CMakeLists.txt
sql/CMakeLists.txt
storage/archive/CMakeLists.txt
storage/blackhole/CMakeLists.txt
storage/example/CMakeLists.txt
storage/federated/CMakeLists.txt
storage/innobase/CMakeLists.txt
storage/mysql_storage_engine.cmake
win/create_def_file.js
=== modified file 'CMakeLists.txt'
=== modified file 'CMakeLists.txt'
--- a/CMakeLists.txt 2008-07-10 22:18:55 +0000
+++ b/CMakeLists.txt 2008-07-17 19:39:52 +0000
@@ -30,19 +30,19 @@
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFORCE_INIT_OF_VARS")
# Heap, MyISAM, Merge and CSV are always compiled in (static, mandatory)
-SET (REQUIRED_ENGINES HEAP MYISAM MYISAMMRG CSV)
-SET (OPTIONAL_ENGINES ARCHIVE BLACKHOLE EXAMPLE FEDERATED INNOBASE)
+SET (REQUIRED_ENGINES heap myisam myisammrg csv)
+SET (OPTIONAL_ENGINES archive blackhole example federated innobase)
# now we create an array of all included engines so we can write out our mysql_plugin_defs struct
SET (INCLUDED_ENGINES ${REQUIRED_ENGINES})
FOREACH(ENGINE ${OPTIONAL_ENGINES})
IF (WITH_${ENGINE}_STORAGE_ENGINE)
- SET (INCLUDED_ENGINES ${INCLUDED_ENGINES} ${ENGINE})
+ SET (DEFINED_ENGINES ${DEFINED_ENGINES} ${ENGINE})
ENDIF(WITH_${ENGINE}_STORAGE_ENGINE)
ENDFOREACH(ENGINE)
#Now write out our mysql_plugin_defs struct
-FOREACH(ENGINE ${INCLUDED_ENGINES} PARTITION)
+FOREACH(ENGINE ${REQUIRED_ENGINES} ${DEFINED_ENGINES} PARTITION)
ADD_DEFINITIONS(-DWITH_${ENGINE}_STORAGE_ENGINE)
STRING(TOLOWER ${ENGINE} LOWER_ENGINE)
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_${LOWER_ENGINE}_plugin")
@@ -108,7 +108,6 @@
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG_INIT ${CMAKE_CXX_FLAGS_DEBUG_INIT})
# generate map files, set stack size (see bug#20815)
- SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1048576")
# remove support for Exception handling
@@ -116,34 +115,29 @@
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_INIT ${CMAKE_CXX_FLAGS_INIT})
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_DEBUG_INIT ${CMAKE_CXX_FLAGS_DEBUG_INIT})
-
- # Disable automatic manifest generation.
- STRING(REPLACE "/MANIFEST" "/MANIFEST:NO" CMAKE_EXE_LINKER_FLAGS
- ${CMAKE_EXE_LINKER_FLAGS})
- # Explicitly disable it since it is the default for newer versions of VS
- STRING(REGEX MATCH "MANIFEST:NO" tmp_manifest ${CMAKE_EXE_LINKER_FLAGS})
- IF(NOT tmp_manifest)
- SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
- ENDIF(NOT tmp_manifest)
ENDIF(MSVC)
IF(WIN32)
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
ENDIF(WIN32)
+# default to x86 platform. We'll check for X64 in a bit
+SET (PLATFORM X86)
+
# This definition is necessary to work around a bug with Intellisense described
# here: http://tinyurl.com/2cb428. Syntax highlighting is important for proper
# debugger functionality.
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
MESSAGE(STATUS "Detected 64-bit platform.")
ADD_DEFINITIONS("-D_WIN64")
+ SET (PLATFORM X64)
ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 8)
IF(EMBED_MANIFESTS)
# Search for the tools (mt, makecat, signtool) necessary for embedding
# manifests and signing executables with the MySQL AB authenticode cert.
#
- # CMake will first search it's defaults (CMAKE_FRAMEWORK_PATH,
+ # CMake will first search it's defaults (CMAKE_FRAMEWORK_PATH,
# CMAKE_APPBUNDLE_PATH, CMAKE_PROGRAM_PATH and the system PATH) followed
# by the listed paths which are the current possible defaults and should be
# updated when necessary.
=== modified file 'libmysqld/CMakeLists.txt'
--- a/libmysqld/CMakeLists.txt 2008-04-01 22:43:17 +0000
+++ b/libmysqld/CMakeLists.txt 2008-07-17 19:39:52 +0000
@@ -138,12 +138,10 @@
ENDFOREACH(rpath)
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
-IF(WITH_CSV_STORAGE_ENGINE)
- INCLUDE(${CMAKE_SOURCE_DIR}/storage/csv/CMakeLists.txt)
- FOREACH(rpath ${CSV_SOURCES})
- SET(LIB_SOURCES ${LIB_SOURCES} ../storage/csv/${rpath})
- ENDFOREACH(rpath)
-ENDIF(WITH_CSV_STORAGE_ENGINE)
+INCLUDE(${CMAKE_SOURCE_DIR}/storage/csv/CMakeLists.txt)
+FOREACH(rpath ${CSV_SOURCES})
+SET(LIB_SOURCES ${LIB_SOURCES} ../storage/csv/${rpath})
+ENDFOREACH(rpath)
SET(SOURCE_SUBLIBS FALSE)
=== modified file 'sql/CMakeLists.txt'
--- a/sql/CMakeLists.txt 2008-07-10 22:18:55 +0000
+++ b/sql/CMakeLists.txt 2008-07-17 19:39:52 +0000
@@ -82,49 +82,31 @@
${PROJECT_SOURCE_DIR}/include/mysql_version.h
${PROJECT_SOURCE_DIR}/sql/sql_builtin.cc
${PROJECT_SOURCE_DIR}/sql/lex_hash.h)
-SET (MYSQLD_LIBS heap myisam myisammrg mysys yassl zlib debug dbug yassl
- taocrypt strings vio regex wsock32 ws2_32 csv)
-
-IF(WITH_ARCHIVE_STORAGE_ENGINE)
- SET (MYSQLD_LIBS ${MYSQLD_LIBS} archive)
-ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
-IF(WITH_BLACKHOLE_STORAGE_ENGINE)
- SET (MYSQLD_LIBS ${MYSQLD_LIBS} blackhole)
-ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
-IF(WITH_EXAMPLE_STORAGE_ENGINE)
- SET (MYSQLD_LIBS ${MYSQLD_LIBS} example)
-ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)
-IF(WITH_FEDERATED_STORAGE_ENGINE)
- SET (MYSQLD_LIBS ${MYSQLD_LIBS} federated)
-ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
-IF(WITH_INNOBASE_STORAGE_ENGINE)
- SET (MYSQLD_LIBS ${MYSQLD_LIBS} innobase)
-ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
+SET (MYSQLD_CORE_LIBS mysys yassl zlib dbug taocrypt strings vio regex)
ADD_EXECUTABLE(mysqld ${MYSQLD_SOURCE})
-TARGET_LINK_LIBRARIES(mysqld ${MYSQLD_LIBS})
-SET_TARGET_PROPERTIES(mysqld PROPERTIES OUTPUT_NAME mysqld${MYSQLD_EXE_SUFFIX})
-SET_TARGET_PROPERTIES(mysqld PROPERTIES LINK_FLAGS "/implib:mysqld${MYSQLD_EXE_SUFFIX}.lib")
+SET_PROPERTY(TARGET mysqld PROPERTY ENABLE_EXPORTS TRUE)
+TARGET_LINK_LIBRARIES(mysqld ${MYSQLD_CORE_LIBS} debug wsock32 ws2_32)
+TARGET_LINK_LIBRARIES(mysqld ${REQUIRED_ENGINES})
+TARGET_LINK_LIBRARIES(mysqld ${DEFINED_ENGINES})
SET_TARGET_PROPERTIES(mysqld PROPERTIES LINK_FLAGS "/DEF:mysqld.def")
-GET_TARGET_PROPERTY(MYSYS_LIB_LOCATION mysys LOCATION)
-GET_TARGET_PROPERTY(STRINGS_LIB_LOCATION strings LOCATION)
-GET_TARGET_PROPERTY(DBUG_LIB_LOCATION dbug LOCATION)
-
-# command to morph the map file into a def file
+FOREACH (LIB ${MYSQLD_CORE_LIBS})
+ GET_TARGET_PROPERTY(LOC ${LIB} LOCATION)
+ SET (LIB_LOCATIONS ${LIB_LOCATIONS} ${LOC})
+ENDFOREACH (LIB)
+
+# command to process obj and lib files into a def file
+IF(CMAKE_GENERATOR MATCHES "Visual Studio")
+ SET (MYSQLD_OBJDIR $(IntDir))
+ELSE(CMAKE_GENERATOR MATCHES "Visual Studio")
+ SET (MYSQLD_OBJDIR CMakeFiles/mysqld.dir)
+ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio")
+FILE(TO_NATIVE_PATH ${MYSQLD_OBJDIR} MYSQLD_OBJDIR)
+
ADD_CUSTOM_COMMAND(TARGET mysqld PRE_LINK
- COMMAND ${PROJECT_SOURCE_DIR}/win/create_def_file.js $(IntDir)
- ${MYSYS_LIB_LOCATION} ${STRINGS_LIB_LOCATION} ${DBUG_LIB_LOCATION}
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/sql)
-
-IF(cmake_version EQUAL 20406)
-# Work around for 2.4.6 bug, OUTPUT_NAME will not set the right .PDB
-# file name. Note that COMPILE_FLAGS set some temporary pdb during build,
-# LINK_FLAGS sets the real one.
-SET_TARGET_PROPERTIES(mysqld PROPERTIES
- COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/mysqld${MYSQLD_EXE_SUFFIX}.pdb"
- LINK_FLAGS "/PDB:${CMAKE_CFG_INTDIR}/mysqld${MYSQLD_EXE_SUFFIX}.pdb")
-ENDIF(cmake_version EQUAL 20406)
+ COMMAND cscript ${PROJECT_SOURCE_DIR}/win/create_def_file.js ${PLATFORM} ${MYSQLD_OBJDIR} ${LIB_LOCATIONS}
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/sql)
IF(EMBED_MANIFESTS)
MYSQL_EMBED_MANIFEST("mysqld" "asInvoker")
=== modified file 'storage/archive/CMakeLists.txt'
--- a/storage/archive/CMakeLists.txt 2008-07-10 22:18:55 +0000
+++ b/storage/archive/CMakeLists.txt 2008-07-17 19:39:52 +0000
@@ -13,7 +13,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-INCLUDE("../mysql_storage_engine.cmake")
+INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
=== modified file 'storage/blackhole/CMakeLists.txt'
--- a/storage/blackhole/CMakeLists.txt 2008-07-10 22:18:55 +0000
+++ b/storage/blackhole/CMakeLists.txt 2008-07-17 19:39:52 +0000
@@ -13,7 +13,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-INCLUDE("../mysql_storage_engine.cmake")
+INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
=== modified file 'storage/example/CMakeLists.txt'
--- a/storage/example/CMakeLists.txt 2008-07-10 22:18:55 +0000
+++ b/storage/example/CMakeLists.txt 2008-07-17 19:39:52 +0000
@@ -13,7 +13,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-INCLUDE("../mysql_storage_engine.cmake")
+INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
=== modified file 'storage/federated/CMakeLists.txt'
--- a/storage/federated/CMakeLists.txt 2008-07-10 22:18:55 +0000
+++ b/storage/federated/CMakeLists.txt 2008-07-17 19:39:52 +0000
@@ -13,7 +13,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-INCLUDE("../mysql_storage_engine.cmake")
+INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
=== modified file 'storage/innobase/CMakeLists.txt'
--- a/storage/innobase/CMakeLists.txt 2008-07-10 22:18:55 +0000
+++ b/storage/innobase/CMakeLists.txt 2008-07-17 19:39:52 +0000
@@ -13,7 +13,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-INCLUDE("../mysql_storage_engine.cmake")
+INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
ADD_DEFINITIONS(-DMYSQL_SERVER -D_WIN32 -D_LIB)
=== modified file 'storage/mysql_storage_engine.cmake'
--- a/storage/mysql_storage_engine.cmake 2008-07-10 22:18:55 +0000
+++ b/storage/mysql_storage_engine.cmake 2008-07-17 19:39:52 +0000
@@ -2,8 +2,7 @@
# MYSQL_STORAGE_ENGINE Macro creates a project to build storage engine
# library.
# WITH_${_engine}_STORAGE_ENGINE will build static library named $engine.lib
-# WITH_${_engine}_STORAGE_ENGINE_SHARED will build dynamic library ha_$engine.dll is build
-# It is possible to give both parameters, to build both static and dynamic libraries.
+# A dynamic version of the engine named ha_$engine.dll is always built
#
# Parameters:
# _engine - storage engine name. Must be uppercase
@@ -13,29 +12,26 @@
# calling this macro
IF(NOT SOURCE_SUBLIBS)
- STRING(TOLOWER ${engine} libname)
- #Create a DLL.The name of the dll is ha_<storage_engine>.dll
+ STRING(TOLOWER ${engine} libname)
+ #Create a DLL.The name of the dll is ha_<storage_engine>.dll
- SET(dyn_libname ha_${libname})
- ADD_LIBRARY(${dyn_libname} SHARED ${${engine}_SOURCES})
-
- #Workaround for CMake's inability to link a dll to an exe.
- #The intention is to do TARGET_LINK_LIBRARIES( ${dyn_libname} mysqld_export_symbols)
- #CMake complains that mysqld_export_symbols does not produce a DLL, so we are forced to
- #explicitely specify the library name and to add the dependency
-
- GET_TARGET_PROPERTY(MYSQLD_EXE mysqld LOCATION)
- STRING(REPLACE ".exe" ".lib" MYSQLD_LIB ${MYSQLD_EXE})
-
- TARGET_LINK_LIBRARIES (${dyn_libname} ${MYSQLD_LIB} zlib regex)
- SET_TARGET_PROPERTIES (${dyn_libname} PROPERTIES COMPILE_FLAGS "-DMYSQL_DYNAMIC_PLUGIN")
- ADD_DEPENDENCIES (${dyn_libname} mysqld)
+ SET(dyn_libname ha_${libname})
+ ADD_LIBRARY(${dyn_libname} SHARED ${${engine}_SOURCES})
+
+ #Workaround for CMake's inability to link a dll to an exe.
+ #The intention is to do TARGET_LINK_LIBRARIES( ${dyn_libname} mysqld)
+ #CMake complains that mysqld does not produce a DLL, so we are forced to
+ #explicitely specify the library name and to add the dependency
+
+ TARGET_LINK_LIBRARIES (${dyn_libname} ${MYSQLD_LIB} mysqld)
+ SET_TARGET_PROPERTIES (${dyn_libname} PROPERTIES COMPILE_FLAGS "-DMYSQL_DYNAMIC_PLUGIN")
+ ADD_DEPENDENCIES (${dyn_libname} mysqld)
- IF(WITH_${engine}_STORAGE_ENGINE)
- #Create static library. The name of the library is <storage_engine>.lib
- ADD_LIBRARY(${libname} ${${engine}_SOURCES})
- ADD_DEPENDENCIES(${libname} GenError)
- ENDIF(WITH_${engine}_STORAGE_ENGINE)
+ IF(WITH_${engine}_STORAGE_ENGINE)
+ #Create static library. The name of the library is <storage_engine>.lib
+ ADD_LIBRARY(${libname} ${${engine}_SOURCES})
+ ADD_DEPENDENCIES(${libname} GenError)
+ ENDIF(WITH_${engine}_STORAGE_ENGINE)
ENDIF(NOT SOURCE_SUBLIBS)
ENDMACRO(MYSQL_STORAGE_ENGINE)
=== modified file 'win/create_def_file.js'
--- a/win/create_def_file.js 2008-07-10 22:18:55 +0000
+++ b/win/create_def_file.js 2008-07-17 19:39:52 +0000
@@ -15,9 +15,6 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-/*
-*/
-
ForReading = 1;
ForWriting = 2;
ForAppending = 8;
@@ -25,33 +22,41 @@
try
{
var args = WScript.Arguments;
- var intDir = args.Item(0);
-
+
+ // check that we got proper arguments
+ if (args.length < 2)
+ {
+ WScript.Echo("Usage: create_def_file <X86|X64> <mysqld obj dir> [libdir1|libdir2|libdir3]");
+ WScript.Quit(1);
+ }
+
+ var is64 = args.Item(0).toLowerCase() == "x64";
var shell = new ActiveXObject("WScript.Shell");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var defFile = fso.CreateTextFile("mysqld.def", true);
defFile.WriteLine("EXPORTS");
+ WScript.Echo("exporting symbols");
- var index = 0;
+ var index = 1;
for (; index < args.length; index++)
{
- var name = args.Item(index).toLowerCase();
- if (name.indexOf(".lib") == -1 && name.indexOf(".obj") == -1)
- {
- var objFolder = fso.GetFolder(args.Item(index));
- var filesEnumerator = new Enumerator(objFolder.files);
- for (; !filesEnumerator.atEnd(); filesEnumerator.moveNext())
- {
- var file = filesEnumerator.item();
- var filename = file.Path.toLowerCase();
- if (filename.indexOf(".obj") != -1 ||
- filename.indexOf(".lib") != -1)
- ProcessObjectFile(filename);
- }
- }
- else
- ProcessObjectFile(name);
+ var name = args.Item(index).toLowerCase();
+ if (name.indexOf(".lib") == -1 && name.indexOf(".obj") == -1)
+ {
+ var objFolder = fso.GetFolder(args.Item(index));
+ var filesEnumerator = new Enumerator(objFolder.files);
+ for (; !filesEnumerator.atEnd(); filesEnumerator.moveNext())
+ {
+ var file = filesEnumerator.item();
+ var filename = file.Path.toLowerCase();
+ if (filename.indexOf(".obj") != -1 ||
+ filename.indexOf(".lib") != -1)
+ ProcessObjectFile(filename);
+ }
+ }
+ else
+ ProcessObjectFile(name);
}
defFile.WriteLine("all_charsets");
@@ -64,60 +69,63 @@
function ProcessObjectFile(objFile)
{
- WScript.Echo("exporting symbols from " + objFile);
-
shell.Run("dumpbin /OUT:symbolfile.txt /SYMBOLS " + objFile, 0, true);
ProcessDumpFile();
}
function ProcessDumpFile()
{
- var dumpFile = fso.OpenTextFile("symbolfile.txt", ForReading);
-
- while (!dumpFile.AtEndOfStream)
- {
- var line = dumpFile.ReadLine();
- if (line.indexOf("External") == -1) continue;
- if (line.indexOf("UNDEF") != -1) continue;
-
- var parts = line.split(" ");
- var index = 0;
- for (; index < parts.length; index++)
- if (parts[index] == "|") break;
-
- var symbol = parts[index + 1];
- var firstSpace = symbol.indexOf(" ");
- if (firstSpace != -1)
- symbol = symbol.substring(0, firstSpace-1)
-
- if (symbol.indexOf("__real@") != -1) continue;
- if (symbol.indexOf("_RTC_") != -1) continue;
- if (symbol.indexOf("??_C@_") != -1) continue;
- if (symbol.indexOf("??_R") != -1) continue;
- if (symbol.indexOf("??_7") != -1) continue;
- if (symbol.indexOf("?_G") != -1) continue; // scalar deleting destructor
- if (symbol.indexOf("?_E") != -1) continue; // vector deleting destructor
-
- // if it starts with a _ then we need to trim it
- var trimLeading = false;
- if (symbol.charAt(0) == "_")
- {
- trimLeading = true;
- var atSign = symbol.indexOf("@");
- if (atSign != -1)
- {
- var paramSize = symbol.substring(atSign+1, symbol.Length);
- if (paramSize.match("[0-9]+$"))
- trimLeading = false;
- }
- }
- if (trimLeading)
- symbol = symbol.substring(1, symbol.length);
-
- if (line.indexOf("notype () ") == -1)
- symbol = symbol + " DATA";
- defFile.WriteLine(symbol);
- }
-
- dumpFile.Close();
+ var dumpFile = fso.OpenTextFile("symbolfile.txt", ForReading);
+
+ while (!dumpFile.AtEndOfStream)
+ {
+ var line = dumpFile.ReadLine();
+ if (line.indexOf("External") == -1) continue;
+ if (line.indexOf("UNDEF") != -1) continue;
+
+ var parts = line.split(" ");
+ var index = 0;
+ for (; index < parts.length; index++)
+ if (parts[index] == "|") break;
+
+ var symbol = parts[index + 1];
+ var firstSpace = symbol.indexOf(" ");
+ if (firstSpace != -1)
+ symbol = symbol.substring(0, firstSpace-1)
+ if (IsCompilerDefinedSymbol(symbol)) continue;
+
+ symbol = ScrubSymbol(symbol);
+
+ if (line.indexOf("notype () ") == -1)
+ symbol = symbol + " DATA";
+ defFile.WriteLine(symbol);
+ }
+
+ dumpFile.Close();
+}
+
+function ScrubSymbol(symbol)
+{
+ if (is64) return symbol;
+ if (symbol.charAt(0) != "_") return symbol;
+
+ var atSign = symbol.indexOf("@");
+ if (atSign != -1)
+ {
+ var paramSize = symbol.substring(atSign+1, symbol.Length);
+ if (paramSize.match("[0-9]+$")) return symbol;
+ }
+
+ return symbol.substring(1, symbol.length);
+}
+
+function IsCompilerDefinedSymbol(symbol)
+{
+ return ((symbol.indexOf("__real@") != -1) ||
+ (symbol.indexOf("_RTC_") != -1) ||
+ (symbol.indexOf("??_C@_") != -1) ||
+ (symbol.indexOf("??_R") != -1) ||
+ (symbol.indexOf("??_7") != -1) ||
+ (symbol.indexOf("?_G") != -1) || // scalar deleting destructor
+ (symbol.indexOf("?_E") != -1)); // vector deleting destructor
}
| Thread |
|---|
| • bzr commit into mysql-5.1-wtf branch (reggie:2614) | Reggie Burnett | 17 Jul |