xref: /llvm-project/clang/test/Interpreter/dynamic-library.cpp (revision e037880b8eff2b425ff80ea9d6337fda27a64337)
1*e037880bSAnubhab Ghosh // REQUIRES: host-supports-jit, x86_64-linux
2d978730dSAnubhab Ghosh 
37f96ce5eSAnubhab Ghosh // To generate libdynamic-library-test.so :
47f96ce5eSAnubhab Ghosh // clang -xc++ -o libdynamic-library-test.so -fPIC -shared
57f96ce5eSAnubhab Ghosh //
67f96ce5eSAnubhab Ghosh // extern "C" {
77f96ce5eSAnubhab Ghosh //
87f96ce5eSAnubhab Ghosh // int ultimate_answer = 0;
97f96ce5eSAnubhab Ghosh //
107f96ce5eSAnubhab Ghosh // int calculate_answer() {
117f96ce5eSAnubhab Ghosh //   ultimate_answer = 42;
127f96ce5eSAnubhab Ghosh //   return 5;
137f96ce5eSAnubhab Ghosh // }
147f96ce5eSAnubhab Ghosh //
157f96ce5eSAnubhab Ghosh // }
16d978730dSAnubhab Ghosh 
177f96ce5eSAnubhab Ghosh // RUN: cat %s | env LD_LIBRARY_PATH=%S/Inputs:$LD_LIBRARY_PATH clang-repl | FileCheck %s
18d978730dSAnubhab Ghosh 
197f96ce5eSAnubhab Ghosh extern "C" int printf(const char* format, ...);
207f96ce5eSAnubhab Ghosh 
217f96ce5eSAnubhab Ghosh extern "C" int ultimate_answer;
227f96ce5eSAnubhab Ghosh extern "C" int calculate_answer();
23d978730dSAnubhab Ghosh 
24d978730dSAnubhab Ghosh %lib libdynamic-library-test.so
25d978730dSAnubhab Ghosh 
26d978730dSAnubhab Ghosh printf("Return value: %d\n", calculate_answer());
27d978730dSAnubhab Ghosh // CHECK: Return value: 5
28d978730dSAnubhab Ghosh 
29d978730dSAnubhab Ghosh printf("Variable: %d\n", ultimate_answer);
30d978730dSAnubhab Ghosh // CHECK-NEXT: Variable: 42
31d978730dSAnubhab Ghosh 
32d978730dSAnubhab Ghosh %quit
33