diff options
author | whitequark <whitequark@whitequark.org> | 2017-11-01 22:18:52 +0000 |
---|---|---|
committer | whitequark <whitequark@whitequark.org> | 2017-11-01 22:18:52 +0000 |
commit | 789164d4262b4132e074fadd6e1df8328618e30e (patch) | |
tree | 264e0442948ef2c759aeef7d9d864e757fdbbab1 /llvm/tools/llvm-c-test | |
parent | 3837322a6b757230368cec94cf2766734983df72 (diff) | |
download | bcm5719-llvm-789164d4262b4132e074fadd6e1df8328618e30e.tar.gz bcm5719-llvm-789164d4262b4132e074fadd6e1df8328618e30e.zip |
[LLVM-C] Expose functions to create debug locations via DIBuilder.
These include:
* Several functions for creating an LLVMDIBuilder,
* LLVMDIBuilderCreateCompileUnit,
* LLVMDIBuilderCreateFile,
* LLVMDIBuilderCreateDebugLocation.
Patch by Harlan Haskins.
Differential Revision: https://reviews.llvm.org/D32368
llvm-svn: 317135
Diffstat (limited to 'llvm/tools/llvm-c-test')
-rw-r--r-- | llvm/tools/llvm-c-test/CMakeLists.txt | 1 | ||||
-rw-r--r-- | llvm/tools/llvm-c-test/debuginfo.c | 38 | ||||
-rw-r--r-- | llvm/tools/llvm-c-test/llvm-c-test.h | 3 | ||||
-rw-r--r-- | llvm/tools/llvm-c-test/main.c | 5 |
4 files changed, 47 insertions, 0 deletions
diff --git a/llvm/tools/llvm-c-test/CMakeLists.txt b/llvm/tools/llvm-c-test/CMakeLists.txt index a2bde0d9714..bce0f4a5a42 100644 --- a/llvm/tools/llvm-c-test/CMakeLists.txt +++ b/llvm/tools/llvm-c-test/CMakeLists.txt @@ -38,6 +38,7 @@ endif () add_llvm_tool(llvm-c-test attributes.c calc.c + debuginfo.c diagnostic.c disassemble.c echo.cpp diff --git a/llvm/tools/llvm-c-test/debuginfo.c b/llvm/tools/llvm-c-test/debuginfo.c new file mode 100644 index 00000000000..2da3887a172 --- /dev/null +++ b/llvm/tools/llvm-c-test/debuginfo.c @@ -0,0 +1,38 @@ +/*===-- debuginfo.c - tool for testing libLLVM and llvm-c API -------------===*\ +|* *| +|* The LLVM Compiler Infrastructure *| +|* *| +|* This file is distributed under the University of Illinois Open Source *| +|* License. See LICENSE.TXT for details. *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* Tests for the LLVM C DebugInfo API *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#include "llvm-c-test.h" +#include "llvm-c/DebugInfo.h" +#include <string.h> +#include <stdio.h> + +int llvm_test_dibuilder() { + LLVMModuleRef M = LLVMModuleCreateWithName("debuginfo.c"); + LLVMDIBuilderRef DIB = LLVMCreateDIBuilder(M); + + LLVMMetadataRef File = LLVMDIBuilderCreateFile(DIB, "debuginfo.c", 12, + ".", 1); + + LLVMDIBuilderCreateCompileUnit(DIB, + LLVMDWARFSourceLanguageC, File,"llvm-c-test", 11, 0, NULL, 0, 0, + NULL, 0, LLVMDWARFEmissionFull, 0, 0, 0); + + char *MStr = LLVMPrintModuleToString(M); + puts(MStr); + LLVMDisposeMessage(MStr); + + LLVMDisposeDIBuilder(DIB); + LLVMDisposeModule(M); + + return 0; +} diff --git a/llvm/tools/llvm-c-test/llvm-c-test.h b/llvm/tools/llvm-c-test/llvm-c-test.h index 2a7090484b0..cf9a0f99de6 100644 --- a/llvm/tools/llvm-c-test/llvm-c-test.h +++ b/llvm/tools/llvm-c-test/llvm-c-test.h @@ -35,6 +35,9 @@ int llvm_calc(void); // disassemble.c int llvm_disassemble(void); +// debuginfo.c +int llvm_test_dibuilder(void); + // metadata.c int llvm_add_named_metadata_operand(void); int llvm_set_metadata(void); diff --git a/llvm/tools/llvm-c-test/main.c b/llvm/tools/llvm-c-test/main.c index 9bc0c96c3d6..5130783d6a6 100644 --- a/llvm/tools/llvm-c-test/main.c +++ b/llvm/tools/llvm-c-test/main.c @@ -55,6 +55,9 @@ static void print_usage(void) { fprintf(stderr, " * --test-diagnostic-handler\n"); fprintf(stderr, " Read bitcode file form stdin with a diagnostic handler set\n\n"); + fprintf(stderr, " * --test-dibuilder\n"); + fprintf(stderr, + " Run tests for the DIBuilder C API - print generated module\n\n"); } int main(int argc, char **argv) { @@ -96,6 +99,8 @@ int main(int argc, char **argv) { return llvm_echo(); } else if (argc == 2 && !strcmp(argv[1], "--test-diagnostic-handler")) { return llvm_test_diagnostic_handler(); + } else if (argc == 2 && !strcmp(argv[1], "--test-dibuilder")) { + return llvm_test_dibuilder(); } else { print_usage(); } |