summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitri Gribenko <gribozavr@gmail.com>2014-02-18 15:20:02 +0000
committerDmitri Gribenko <gribozavr@gmail.com>2014-02-18 15:20:02 +0000
commit31ad0a00d166f6a2811548d7e4269165b08a048a (patch)
tree3487c5eb2cda5a96c0b0d99ff5d6211b56195338
parente4f0f4ab79d50a62509bc832b10d30b372e4a1bd (diff)
downloadclang-31ad0a00d166f6a2811548d7e4269165b08a048a.tar.gz
clang-31ad0a00d166f6a2811548d7e4269165b08a048a.tar.bz2
clang-31ad0a00d166f6a2811548d7e4269165b08a048a.tar.xz
libclang: fix a bug in processing invalid arguments, introduced in r201249
Recommit r201346, reverted in r201373. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201578 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--test/Unit/lit.cfg24
-rw-r--r--test/Unit/lit.site.cfg.in1
-rw-r--r--tools/libclang/CIndex.cpp17
-rw-r--r--unittests/CMakeLists.txt3
-rw-r--r--unittests/Makefile2
5 files changed, 28 insertions, 19 deletions
diff --git a/test/Unit/lit.cfg b/test/Unit/lit.cfg
index f39fded3ac..01b54c799d 100644
--- a/test/Unit/lit.cfg
+++ b/test/Unit/lit.cfg
@@ -3,6 +3,7 @@
# Configuration file for the 'lit' test runner.
import os
+import platform
import lit.formats
import lit.util
@@ -85,10 +86,19 @@ if config.test_exec_root is None:
lit_config.load_config(config, site_cfg)
raise SystemExit
-# If necessary, point the dynamic loader at libLLVM.so.
-if config.enable_shared:
- shlibpath = config.environment.get(config.shlibpath_var,'')
- if shlibpath:
- shlibpath = os.pathsep + shlibpath
- shlibpath = config.shlibdir + shlibpath
- config.environment[config.shlibpath_var] = shlibpath
+shlibpath_var = ''
+if platform.system() == 'Linux':
+ shlibpath_var = 'LD_LIBRARY_PATH'
+elif platform.system() == 'Darwin':
+ shlibpath_var = 'DYLD_LIBRARY_PATH'
+elif platform.system() == 'Windows':
+ shlibpath_var = 'PATH'
+
+# Point the dynamic loader at dynamic libraries in 'lib'.
+llvm_libs_dir = getattr(config, 'llvm_libs_dir', None)
+if not llvm_libs_dir:
+ lit_config.fatal('No LLVM libs dir set!')
+shlibpath = os.path.pathsep.join((llvm_libs_dir,
+ config.environment.get(shlibpath_var,'')))
+config.environment[shlibpath_var] = shlibpath
+
diff --git a/test/Unit/lit.site.cfg.in b/test/Unit/lit.site.cfg.in
index a255cdce0d..37e8cb011e 100644
--- a/test/Unit/lit.site.cfg.in
+++ b/test/Unit/lit.site.cfg.in
@@ -10,7 +10,6 @@ config.llvm_build_mode = "@LLVM_BUILD_MODE@"
config.clang_obj_root = "@CLANG_BINARY_DIR@"
config.enable_shared = @ENABLE_SHARED@
config.shlibdir = "@SHLIBDIR@"
-config.shlibpath_var = "@SHLIBPATH_VAR@"
config.target_triple = "@TARGET_TRIPLE@"
# Support substitution of the tools_dir, libs_dirs, and build_mode with user
diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp
index a74feabf06..e862889f26 100644
--- a/tools/libclang/CIndex.cpp
+++ b/tools/libclang/CIndex.cpp
@@ -2686,6 +2686,11 @@ static void clang_parseTranslationUnit_Impl(void *UserData) {
unsigned options = PTUI->options;
CXTranslationUnit *out_TU = PTUI->out_TU;
+ // Set up the initial return values.
+ if (out_TU)
+ *out_TU = NULL;
+ PTUI->result = CXError_Failure;
+
// Check arguments.
if (!CIdx || !out_TU ||
(unsaved_files == NULL && num_unsaved_files != 0)) {
@@ -2693,10 +2698,6 @@ static void clang_parseTranslationUnit_Impl(void *UserData) {
return;
}
- // Set up the initial return values.
- *out_TU = NULL;
- PTUI->result = CXError_Failure;
-
CIndexer *CXXIdx = static_cast<CIndexer *>(CIdx);
if (CXXIdx->isOptEnabled(CXGlobalOpt_ThreadBackgroundPriorityForIndexing))
@@ -2826,12 +2827,8 @@ clang_parseTranslationUnit(CXIndex CIdx,
CIdx, source_filename, command_line_args, num_command_line_args,
unsaved_files, num_unsaved_files, options, &TU);
(void)Result;
-
- // FIXME: This probably papers over a problem. If the result is not success,
- // no TU should be set.
- if (Result != CXError_Success)
- return 0;
-
+ assert((TU && Result == CXError_Success) ||
+ (!TU && Result != CXError_Success));
return TU;
}
diff --git a/unittests/CMakeLists.txt b/unittests/CMakeLists.txt
index f00008e040..cc1322699e 100644
--- a/unittests/CMakeLists.txt
+++ b/unittests/CMakeLists.txt
@@ -22,3 +22,6 @@ if(CLANG_ENABLE_REWRITER)
add_subdirectory(Format)
add_subdirectory(Sema)
endif()
+if(NOT WIN32) # FIXME:Investigating.
+ add_subdirectory(libclang)
+endif()
diff --git a/unittests/Makefile b/unittests/Makefile
index e4fbe584da..9b95a6eda2 100644
--- a/unittests/Makefile
+++ b/unittests/Makefile
@@ -14,7 +14,7 @@ ifndef CLANG_LEVEL
IS_UNITTEST_LEVEL := 1
CLANG_LEVEL := ..
-PARALLEL_DIRS = Basic Lex Driver
+PARALLEL_DIRS = Basic Lex Driver libclang
include $(CLANG_LEVEL)/../..//Makefile.config