From ad83a745556b18d0066b8c47ba3016b06e8ed417 Mon Sep 17 00:00:00 2001 From: Jason Hiser <jdhiser@gmail.com> Date: Fri, 2 Nov 2018 15:36:05 +0000 Subject: [PATCH] changed build to use .so files instead of .a files for linking library components Former-commit-id: 1ece652adfb33ef95504dc6eb60374d8d195538a --- SConscript | 12 +++++++----- SConstruct | 19 ++++++------------- libEXEIO/src/SConscript | 2 +- libElfDep/src/SConscript | 2 +- libIRDB/src/cfg/SConscript | 5 ++++- libIRDB/src/core/SConscript | 10 ++++++---- libIRDB/src/core/fileir.cpp | 13 ++++++++----- libIRDB/src/syscall/SConscript | 2 +- libIRDB/src/util/SConscript | 2 +- libMEDSannotation/SConscript | 2 +- libStructDiv/src/SConscript | 2 +- libcapstone | 2 +- libehp | 2 +- libtransform/src/SConscript | 4 ++-- manifest.txt | 1 + pebliss/trunk/pe_lib/SConscript | 2 +- tools/hook_start/SConscript | 2 +- .../zest_cfi_runtime/SConscript64 | 3 +-- xform/SConscript | 2 +- 19 files changed, 46 insertions(+), 43 deletions(-) diff --git a/SConscript b/SConscript index 101e379d3..448adf915 100644 --- a/SConscript +++ b/SConscript @@ -39,16 +39,17 @@ else: os.chdir(os.environ['SECURITY_TRANSFORMS_HOME']) -env['BASE_IRDB_LIBS']="IRDB-core", "pqxx", "pq", "EXEIO" pedi = Command( target = "./testoutput", source = "./SConscript", action = os.environ['PEDI_HOME']+"/pedi -m manifest.txt " ) +env['BASE_IRDB_LIBS']="IRDB-core", "pqxx", "pq", "EXEIO" + if sysname != "SunOS": libPEBLISS=SConscript("pebliss/trunk/pe_lib/SConscript", variant_dir='scons_build/libPEBLISS') # setup libraries needed for linking - env['BASE_IRDB_LIBS']="IRDB-core", "pqxx", "pq", "EXEIO", "pebliss" + env['BASE_IRDB_LIBS']=env['BASE_IRDB_LIBS']+("pebliss",) Depends(pedi,libPEBLISS) # pebliss requires iconv, which needs to be explicit on cygwin. @@ -58,20 +59,21 @@ if "CYGWIN" in sysname: Export('env') +libcapstone=env.Install("$SECURITY_TRANSFORMS_HOME/lib","$SECURITY_TRANSFORMS_HOME/libcapstone/libcapstone.so.4") libehp=env.SConscript("libehp/SConscript", variant_dir='scons_build/libehp') libehp=env.Install("$SECURITY_TRANSFORMS_HOME/lib", libehp); - libtransform=SConscript("libtransform/SConscript", variant_dir='scons_build/libtransform') libEXEIO=SConscript("libEXEIO/SConscript", variant_dir='scons_build/libEXEIO') -libbea=SConscript("beaengine/SConscript", variant_dir='scons_build/beaengine') +#libbea=SConscript("beaengine/SConscript", variant_dir='scons_build/beaengine') libMEDSannotation=SConscript("libMEDSannotation/SConscript", variant_dir='scons_build/libMEDSannotation') libxform=SConscript("xform/SConscript", variant_dir='scons_build/libxform') libIRDB=SConscript("libIRDB/SConscript", variant_dir='scons_build/libIRDB') +Depends(libIRDB,libcapstone) libStructDiv=SConscript("libStructDiv/SConscript", variant_dir='scons_build/libStructDiv') libElfDep=SConscript("libElfDep/SConscript", variant_dir='scons_build/libElfDep') -Depends(pedi, (libehp,libtransform,libEXEIO,libbea,libMEDSannotation,libxform,libIRDB,libStructDiv,libElfDep)) +Depends(pedi, (libehp,libtransform,libEXEIO,libMEDSannotation,libxform,libIRDB,libStructDiv,libElfDep, libcapstone)) tools=None if 'build_tools' not in env or env['build_tools'] is None or int(env['build_tools']) == 1: diff --git a/SConstruct b/SConstruct index 0180dbc4a..6804dccd1 100644 --- a/SConstruct +++ b/SConstruct @@ -24,28 +24,20 @@ env.Replace(build_tools=ARGUMENTS.get("build_tools", 1)) env.Replace(build_stars=ARGUMENTS.get("build_stars", 1)) env.Replace(build_cgc=ARGUMENTS.get("build_cgc", 0)) +env.Append(LINKFLAGS=" -Wl,-unresolved-symbols=ignore-in-shared-libs ") if int(env['debug']) == 1: print "Setting debug mode" env.Append(CFLAGS=" -g ") env.Append(CXXFLAGS=" -g ") - env.Append(LINKFLAGS=" -g ") + env.Append(LINKFLAGS=" -g ") + env.Append(SHLINKFLAGS=" -g ") else: print "Setting release mode" env.Append(CFLAGS=" -O3 ") env.Append(CXXFLAGS=" -O3 ") - env.Append(LINKFLAGS=" -O3 ") - -if 'build_cgc' in env and int(env['build_cgc']) == 1: - print "Setting debug mode" - env.Append(CFLAGS=" -DCGC ") - env.Append(CXXFLAGS=" -DCGC ") - env.Append(LINKFLAGS=" -DCGC ") - print 'Turn off appfw as we are building CGC' - env['build_appfw'] = 0 -elif env['build_appfw'] is None: # by default, turn on build of appfw, unless cgc is on - env['build_appfw'] = 1 - + env.Append(LINKFLAGS=" -O3 ") + env.Append(SHLINKFLAGS=" -O3 ") # set 32/64 bit build properly print "env[64bit]="+str(env['do_64bit_build']) @@ -69,6 +61,7 @@ else: # add extra flag for solaris. if sysname == "SunOS": env.Append(LINKFLAGS=" -L/opt/csw/lib -DSOLARIS ") + env.Append(SHLINKFLAGS=" -L/opt/csw/lib -DSOLARIS ") env.Append(CFLAGS=" -I/opt/csw/include -DSOLARIS ") env.Append(CXXFLAGS=" -I/opt/csw/include -DSOLARIS ") diff --git a/libEXEIO/src/SConscript b/libEXEIO/src/SConscript index 2082e8098..413aadb3a 100644 --- a/libEXEIO/src/SConscript +++ b/libEXEIO/src/SConscript @@ -21,7 +21,7 @@ cpppath=''' myenv=myenv.Clone(CPPPATH=Split(cpppath)) myenv.Append(CXXFLAGS=" -std=c++11 -Wall -Werror ") -lib=myenv.Library(libname, Split(files)) +lib=myenv.SharedLibrary(libname, Split(files), LIBS=Split("IRDB-core pebliss"), LIBPATH="$SECURITY_TRANSFORMS_HOME/lib" ) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib) Default(install) diff --git a/libElfDep/src/SConscript b/libElfDep/src/SConscript index 848a762e5..9da08bd9c 100644 --- a/libElfDep/src/SConscript +++ b/libElfDep/src/SConscript @@ -23,7 +23,7 @@ LIBS=Split("IRDB-core transform") myenv=myenv.Clone(CPPPATH=Split(cpppath)) myenv.Append(CXXFLAGS = " -std=c++11 ") -lib=myenv.Library("ElfDep", Split(files), LIBPATH=LIBPATH, LIBS=LIBS) +lib=myenv.SharedLibrary("ElfDep", Split(files), LIBPATH=LIBPATH, LIBS=LIBS) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib) Default(install) diff --git a/libIRDB/src/cfg/SConscript b/libIRDB/src/cfg/SConscript index 327f3031e..c9e8e715c 100644 --- a/libIRDB/src/cfg/SConscript +++ b/libIRDB/src/cfg/SConscript @@ -14,11 +14,14 @@ cpppath=''' $SECURITY_TRANSFORMS_HOME/include/ $SECURITY_TRANSFORMS_HOME/libIRDB/include/ ''' +libpath=''' + $SECURITY_TRANSFORMS_HOME/lib + ''' myenv.Append(CCFLAGS=" -Wall -std=c++11") myenv=myenv.Clone(CPPPATH=Split(cpppath)) -lib=myenv.Library(libname, Split(files)) +lib=myenv.SharedLibrary(libname, Split(files), LIBS=Split("IRDB-core"), LIBPATH=Split(libpath)) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib) Default(install) diff --git a/libIRDB/src/core/SConscript b/libIRDB/src/core/SConscript index fc85c1a7d..b538b5836 100644 --- a/libIRDB/src/core/SConscript +++ b/libIRDB/src/core/SConscript @@ -42,15 +42,17 @@ cpppath=''' $SECURITY_TRANSFORMS_HOME/libIRDB/include/ $SECURITY_TRANSFORMS_HOME/libcapstone/include/capstone/ ''' -# $SECURITY_TRANSFORMS_HOME/beaengine/include -# $SECURITY_TRANSFORMS_HOME/beaengine/beaengineSources/Includes/ +libpath=''' + $SECURITY_TRANSFORMS_HOME/lib + ''' -globs=glob.glob(os.environ['SECURITY_TRANSFORMS_HOME']+'/libcapstone/zipr_unpack/*.o') +#globs=glob.glob(os.environ['SECURITY_TRANSFORMS_HOME']+'/libcapstone/zipr_unpack/*.o') myenv.Append(CCFLAGS=" -Wall -std=c++11 ") +myenv.Append(LIBPATH=libpath) myenv=myenv.Clone(CPPPATH=Split(cpppath)) -mylib=myenv.Library(libname, Split(files) + globs) +mylib=myenv.SharedLibrary(libname, Split(files), LIBS=Split("pqxx capstone")) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", mylib) Default(install) diff --git a/libIRDB/src/core/fileir.cpp b/libIRDB/src/core/fileir.cpp index a46336a57..89f94dba2 100644 --- a/libIRDB/src/core/fileir.cpp +++ b/libIRDB/src/core/fileir.cpp @@ -869,27 +869,30 @@ void FileIR_t::WriteToDB() // eh css relocs for(const auto& i : eh_css) { - for(auto& reloc : i->GetRelocations()) + const auto &relocs=i->GetRelocations(); + for(auto& reloc : relocs) W_reloc << reloc->WriteToDB(fileptr,i); } // eh pgms relocs for(const auto& i : eh_pgms) { - string r=""; - for(auto& reloc : i->GetRelocations()) + const auto &relocs=i->GetRelocations(); + for(auto& reloc : relocs) W_reloc << reloc->WriteToDB(fileptr,i); } // scoops relocs for(const auto& i : scoops) { - for(auto& reloc : i->GetRelocations()) + const auto &relocs=i->GetRelocations(); + for(auto& reloc : relocs) W_reloc << reloc->WriteToDB(fileptr,i); } // write out instruction's relocs for(const auto& i : insns) { - for(auto& reloc : i->GetRelocations()) + const auto &relocs=i->GetRelocations(); + for(auto& reloc : relocs) W_reloc << reloc->WriteToDB(fileptr,i); } W_reloc.complete(); diff --git a/libIRDB/src/syscall/SConscript b/libIRDB/src/syscall/SConscript index 358dafeb9..2a5acdb1c 100644 --- a/libIRDB/src/syscall/SConscript +++ b/libIRDB/src/syscall/SConscript @@ -20,7 +20,7 @@ myenv.Append(CXXFLAGS = " -std=c++11 ") myenv=myenv.Clone(CPPPATH=Split(cpppath)) -lib=myenv.Library(libname, Split(files)) +lib=myenv.SharedLibrary(libname, Split(files), LIBS=Split("IRDB-core IRDB-util"), LIBPATH=Split("$SECURITY_TRANSFORMS_HOME/lib")) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib) Default(install) diff --git a/libIRDB/src/util/SConscript b/libIRDB/src/util/SConscript index 202ea107e..2e773c30e 100644 --- a/libIRDB/src/util/SConscript +++ b/libIRDB/src/util/SConscript @@ -20,7 +20,7 @@ cpppath=''' myenv=myenv.Clone(CPPPATH=Split(cpppath)) myenv.Append(CXXFLAGS = " -std=c++11 ") -lib=myenv.Library(libname, Split(files)) +lib=myenv.SharedLibrary(libname, Split(files), LIBS=Split("IRDB-core"), LIBPATH=Split("$SECURITY_TRANSFORMS_HOME/lib")) install=env.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib) Default(install) diff --git a/libMEDSannotation/SConscript b/libMEDSannotation/SConscript index 31b5b9cea..8ca4d129e 100644 --- a/libMEDSannotation/SConscript +++ b/libMEDSannotation/SConscript @@ -28,7 +28,7 @@ cpppath=''' myenv=myenv.Clone(CPPPATH=Split(cpppath)) myenv.Append(CXXFLAGS=" -std=c++11 -Wall -Werror ") -lib=myenv.Library(lib, Split(files)) +lib=myenv.SharedLibrary(lib, Split(files)) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib) Default(install) diff --git a/libStructDiv/src/SConscript b/libStructDiv/src/SConscript index 897180376..11fce4d5b 100644 --- a/libStructDiv/src/SConscript +++ b/libStructDiv/src/SConscript @@ -17,7 +17,7 @@ LIBPATH="$SECURITY_TRANSFORMS_HOME/lib" myenv=myenv.Clone(CPPPATH=Split(cpppath)) myenv.Append(CXXFLAGS="-fPIC") -lib=myenv.Library("StructDiv", Split(files)) +lib=myenv.SharedLibrary("StructDiv", Split(files)) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib) Default(install) diff --git a/libcapstone b/libcapstone index 9408c0de4..a6b87b7bc 160000 --- a/libcapstone +++ b/libcapstone @@ -1 +1 @@ -Subproject commit 9408c0de4f3a4b2a3cc1cac3f22219301c561400 +Subproject commit a6b87b7bc31499b9ec538701b438f7a60e9dda38 diff --git a/libehp b/libehp index b35d893a2..2de79bf5a 160000 --- a/libehp +++ b/libehp @@ -1 +1 @@ -Subproject commit b35d893a29ae39f9c8ecb01a2e489e73facee169 +Subproject commit 2de79bf5a1df8c8c899c9c63edee76cbb35bb2ed diff --git a/libtransform/src/SConscript b/libtransform/src/SConscript index 81e16c573..d075920eb 100644 --- a/libtransform/src/SConscript +++ b/libtransform/src/SConscript @@ -18,12 +18,12 @@ cpppath=''' LIBPATH="$SECURITY_TRANSFORMS_HOME/lib" -LIBS=Split("IRDB-core IRDB-cfg IRDB-util pqxx BeaEngine_s_d ") +LIBS=Split("IRDB-core IRDB-cfg IRDB-util MEDSannotation") myenv=myenv.Clone(CPPPATH=Split(cpppath)) myenv.Append(CXXFLAGS = " -std=c++11 ") -lib=myenv.Library("transform", Split(files), LIBPATH=LIBPATH, LIBS=LIBS) +lib=myenv.SharedLibrary("transform", Split(files), LIBPATH=LIBPATH, LIBS=LIBS) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib) Default(install) Return('install') diff --git a/manifest.txt b/manifest.txt index 18453af13..8895a37f7 100644 --- a/manifest.txt +++ b/manifest.txt @@ -1,4 +1,5 @@ directory plugins_install ps +directory lib ps directory bin ps diff --git a/pebliss/trunk/pe_lib/SConscript b/pebliss/trunk/pe_lib/SConscript index 3a8a79d46..6e58fd457 100644 --- a/pebliss/trunk/pe_lib/SConscript +++ b/pebliss/trunk/pe_lib/SConscript @@ -52,7 +52,7 @@ cpppath=''' myenv=myenv.Clone(CPPPATH=Split(cpppath)) myenv.Append(CCFLAGS=" -w ") -lib=myenv.Library(libname, Split(files)) +lib=myenv.SharedLibrary(libname, Split(files)) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib) Default(install) diff --git a/tools/hook_start/SConscript b/tools/hook_start/SConscript index 58d5384d9..2018f0475 100644 --- a/tools/hook_start/SConscript +++ b/tools/hook_start/SConscript @@ -18,7 +18,7 @@ cpppath=''' # $SECURITY_TRANSFORMS_HOME/libtransform/include CPPFLAGS="--std=c++11" LIBPATH="$SECURITY_TRANSFORMS_HOME/lib" -LIBS=Split( env.subst('$BASE_IRDB_LIBS')+ " IRDB-core IRDB-cfg IRDB-util pqxx BeaEngine_s_d transform MEDSannotation ") +LIBS=Split( env.subst('$BASE_IRDB_LIBS')+ " IRDB-cfg IRDB-util transform MEDSannotation ") myenv=myenv.Clone(CPPPATH=Split(cpppath)) myenv.Append(CPPFLAGS=CPPFLAGS) diff --git a/tools/selective_cfi/zest_cfi_runtime/SConscript64 b/tools/selective_cfi/zest_cfi_runtime/SConscript64 index 9b14c4ec7..650a83866 100644 --- a/tools/selective_cfi/zest_cfi_runtime/SConscript64 +++ b/tools/selective_cfi/zest_cfi_runtime/SConscript64 @@ -1,8 +1,7 @@ import os -Import('env') -myenv=env.Clone() +myenv=Environment() myenv.Replace(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME']) myenv.Replace(ZEST_RUNTIME=os.environ['ZEST_RUNTIME']) diff --git a/xform/SConscript b/xform/SConscript index 26e7d6fd6..e1af37fa9 100644 --- a/xform/SConscript +++ b/xform/SConscript @@ -30,7 +30,7 @@ CFLAGS="-fPIC -DUBUNTU" myenv=myenv.Clone(CC="$CXX", CPPPATH=Split(cpppath), CFLAGS=CFLAGS) myenv.Append(CXXFLAGS=" -std=c++11 ") -lib=myenv.Library(lib, Split(files)) +lib=myenv.SharedLibrary(lib, Split(files), LIBS=Split("IRDB-core EXEIO"), LIBPATH=Split("$SECURITY_TRANSFORMS_HOME/lib")) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/lib/", lib) -- GitLab