linking issues on Linux. It seems that the name 'launch' for a function was causing some weird linking issues that only happened sometimes. Quite ikely, the issue is another library using the same name.

This commit is contained in:
Julian Dolby 2017-10-18 01:49:25 +00:00
parent 601c9fae7b
commit 207181aa89
7 changed files with 24 additions and 10 deletions

View File

@ -27,8 +27,8 @@ $(C_GENERATED)/smoke_main.o: $(TEST_JNI_BRIDGE_HEADER) smoke_main.cpp
$(CAST_TEST_BIN)$(LIBPREFIX)xlator_test.$(DLLEXT): $(C_GENERATED)/smoke.o
$(CC) $(CC_LDFLAGS) -Wl,-rpath -Wl,$(DOMO_AST_BIN) $(CAST_OBJS) -o $@
main: $(CAST_TEST_BIN)/smoke_main
main: /tmp/smoke_main
$(CAST_TEST_BIN)/smoke_main: $(TEST_JNI_BRIDGE_HEADER) $(DOMO_AST_BIN)/$(LIBPREFIX)cast/launch.o $(C_GENERATED)/smoke_main.o
/tmp/smoke_main: $(TEST_JNI_BRIDGE_HEADER) $(DOMO_AST_BIN)/$(LIBPREFIX)cast/launch.o $(C_GENERATED)/smoke_main.o
$(CC) $(ALL_FLAGS) $(DOMO_AST_BIN)/$(LIBPREFIX)cast/launch.o $(C_GENERATED)/smoke_main.o $(CC_LD_PATHS) -o $@

View File

@ -33,28 +33,40 @@ int main(int argc, char **argv) {
char *buf = (char *)malloc((strlen(argv[1]) + 100) * sizeof(char));
strcpy(buf, argv[1]);
printf("%s\n", buf);
printf("1: %s\n", buf);
JNIEnv *java_env = launch(buf);
JNIEnv *java_env = launch_jvm(buf);
printf("2: %s\n", buf);
jclass NativeTranslatorTest =
java_env->FindClass("com/ibm/wala/cast/test/TestNativeTranslator");
if (java_env->ExceptionCheck()) { die(java_env); }
printf("3: %s\n", buf);
jmethodID testInit =
java_env->GetMethodID(NativeTranslatorTest, "<init>", "()V");
if (java_env->ExceptionCheck()) { die(java_env); }
printf("4: %s\n", buf);
jobject test =
java_env->NewObject(NativeTranslatorTest, testInit);
if (java_env->ExceptionCheck()) { die(java_env); }
printf("5: %s\n", buf);
jmethodID testAst =
java_env->GetMethodID(NativeTranslatorTest, "testNativeCAst", "()V");
if (java_env->ExceptionCheck()) { die(java_env); }
printf("6: %s\n", buf);
java_env->CallVoidMethod(test, testAst);
if (java_env->ExceptionCheck()) { die(java_env); }
printf("6: %s\n", buf);
exit(0);
}

View File

@ -24,6 +24,7 @@ import com.ibm.wala.cast.tree.impl.CAstImpl;
import com.ibm.wala.cast.tree.rewrite.CAstRewriter.CopyKey;
import com.ibm.wala.cast.tree.rewrite.CAstRewriter.RewriteContext;
import com.ibm.wala.cast.tree.rewrite.CAstRewriterFactory;
import com.ibm.wala.ssa.IR;
import com.ibm.wala.util.io.TemporaryFile;
public class TestNativeTranslator {
@ -149,7 +150,7 @@ public class TestNativeTranslator {
public void testNativeCAst() throws IOException {
CAst Ast = new CAstImpl();
URL junk = TestNativeTranslator.class.getClassLoader().getResource("smoke_main");
URL junk = IR.class.getClassLoader().getResource("primordial.txt");
SmokeXlator xlator = new SmokeXlator(Ast, junk);

View File

@ -35,7 +35,7 @@
<id>test-native</id>
<phase>test</phase>
<configuration>
<executable>${project.build.outputDirectory}/smoke_main</executable>
<executable>/tmp/smoke_main</executable>
<arguments>
<argument>${project.build.outputDirectory}:${basedir}/../com.ibm.wala.cast/target/classes:${basedir}/../com.ibm.wala.core/target/classes:${basedir}/../com.ibm.wala.util/target/classes</argument>
</arguments>

View File

@ -8,7 +8,7 @@ if (uname | grep -i "cygwin"); then
cmd.exe /c "call \"$MSVC\\vcvarsall.bat\" $ARCH && make"
else
make
make --quiet
fi
# Local variables:

View File

@ -3,7 +3,7 @@
#include "jni.h"
extern "C" JNIEnv *launch(char *);
extern "C" void kill();
extern JNIEnv *launch_jvm(char *);
extern void kill();
#endif

View File

@ -3,10 +3,11 @@
#include <strings.h>
#include "Exceptions.h"
#include "CAstWrapper.h"
#include "launch.h"
JavaVM *javaVM;
JNIEnv *launch(char *classpath) {
JNIEnv *launch_jvm(char *classpath) {
JavaVMOption jvmopt[2];
const char *jcp = "-Djava.class.path=";