12bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg/*===-- main.c - tool for testing libLLVM and llvm-c API ------------------===*\ 22bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|* *| 32bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|* The LLVM Compiler Infrastructure *| 42bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|* *| 52bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|* This file is distributed under the University of Illinois Open Source *| 62bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|* License. See LICENSE.TXT for details. *| 72bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|* *| 82bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|*===----------------------------------------------------------------------===*| 92bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|* *| 102bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|* Main file for llvm-c-tests. "Parses" arguments and dispatches. *| 112bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg|* *| 122bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg\*===----------------------------------------------------------------------===*/ 132bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg 142bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg#include "llvm-c-test.h" 152bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg#include "llvm-c/BitReader.h" 162bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg#include "llvm-c/Core.h" 172bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg#include <stdio.h> 182bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg#include <stdlib.h> 192bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg#include <string.h> 202bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg 212bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborgstatic void print_usage(void) { 222bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, "llvm-c-test command\n\n"); 232bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, " Commands:\n"); 242bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, " * --module-dump\n"); 252bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, " Read bytecode from stdin - print disassembly\n\n"); 262bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, " * --module-list-functions\n"); 272bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, 282bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg " Read bytecode from stdin - list summary of functions\n\n"); 292bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, " * --module-list-globals\n"); 302bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, " Read bytecode from stdin - list summary of globals\n\n"); 312bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, " * --targets-list\n"); 322bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, " List available targets\n\n"); 332bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, " * --object-list-sections\n"); 342bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, " Read object file form stdin - list sections\n\n"); 352bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, " * --object-list-symbols\n"); 362bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, 372bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg " Read object file form stdin - list symbols (like nm)\n\n"); 382bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, " * --disassemble\n"); 392bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, " Read lines of triple, hex ascii machine code from stdin " 402bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg "- print disassembly\n\n"); 412bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf(stderr, " * --calc\n"); 422bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg fprintf( 432bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg stderr, 442bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg " Read lines of name, rpn from stdin - print generated module\n\n"); 452bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg} 462bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg 472bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborgint main(int argc, char **argv) { 482bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg LLVMPassRegistryRef pr = LLVMGetGlobalPassRegistry(); 492bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg 502bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg LLVMInitializeCore(pr); 512bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg 522bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg if (argc == 2 && !strcmp(argv[1], "--module-dump")) { 532bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg return module_dump(); 542bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg } else if (argc == 2 && !strcmp(argv[1], "--module-list-functions")) { 552bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg return module_list_functions(); 562bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg } else if (argc == 2 && !strcmp(argv[1], "--module-list-globals")) { 572bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg return module_list_globals(); 582bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg } else if (argc == 2 && !strcmp(argv[1], "--targets-list")) { 592bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg return targets_list(); 602bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg } else if (argc == 2 && !strcmp(argv[1], "--object-list-sections")) { 612bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg return object_list_sections(); 622bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg } else if (argc == 2 && !strcmp(argv[1], "--object-list-symbols")) { 632bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg return object_list_symbols(); 642bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg } else if (argc == 2 && !strcmp(argv[1], "--disassemble")) { 652bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg return disassemble(); 662bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg } else if (argc == 2 && !strcmp(argv[1], "--calc")) { 672bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg return calc(); 682bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg } else { 692bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg print_usage(); 702bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg } 712bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg 722bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg return 1; 732bef1a6b25d938210547cd0f5ba4a08abdad2583Anders Waldenborg} 74