diff tools/llvm-c-test/object.c @ 148:63bd29f05246

merged
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 14 Aug 2019 19:46:37 +0900
parents c2174574ed3a
children
line wrap: on
line diff
--- a/tools/llvm-c-test/object.c	Sun Dec 23 19:23:36 2018 +0900
+++ b/tools/llvm-c-test/object.c	Wed Aug 14 19:46:37 2019 +0900
@@ -1,9 +1,9 @@
 /*===-- object.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.                                      *|
+|* Part of the LLVM Project, under the Apache License v2.0 with LLVM          *|
+|* Exceptions.                                                                *|
+|* See https://llvm.org/LICENSE.txt for license information.                  *|
+|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception                    *|
 |*                                                                            *|
 |*===----------------------------------------------------------------------===*|
 |*                                                                            *|
@@ -19,23 +19,26 @@
 
 int llvm_object_list_sections(void) {
   LLVMMemoryBufferRef MB;
-  LLVMObjectFileRef O;
+  LLVMBinaryRef O;
   LLVMSectionIteratorRef sect;
-  char *msg = NULL;
 
-  if (LLVMCreateMemoryBufferWithSTDIN(&MB, &msg)) {
-    fprintf(stderr, "Error reading file: %s\n", msg);
+  char *outBufferErr = NULL;
+  if (LLVMCreateMemoryBufferWithSTDIN(&MB, &outBufferErr)) {
+    fprintf(stderr, "Error reading file: %s\n", outBufferErr);
+    free(outBufferErr);
     exit(1);
   }
 
-  O = LLVMCreateObjectFile(MB);
-  if (!O) {
-    fprintf(stderr, "Error reading object\n");
+  char *outBinaryErr = NULL;
+  O = LLVMCreateBinary(MB, LLVMGetGlobalContext(), &outBinaryErr);
+  if (!O || outBinaryErr) {
+    fprintf(stderr, "Error reading object: %s\n", outBinaryErr);
+    free(outBinaryErr);
     exit(1);
   }
 
-  sect = LLVMGetSections(O);
-  while (!LLVMIsSectionIteratorAtEnd(O, sect)) {
+  sect = LLVMObjectFileCopySectionIterator(O);
+  while (sect && !LLVMObjectFileIsSectionIteratorAtEnd(O, sect)) {
     printf("'%s': @0x%08" PRIx64 " +%" PRIu64 "\n", LLVMGetSectionName(sect),
            LLVMGetSectionAddress(sect), LLVMGetSectionSize(sect));
 
@@ -44,32 +47,37 @@
 
   LLVMDisposeSectionIterator(sect);
 
-  LLVMDisposeObjectFile(O);
+  LLVMDisposeBinary(O);
+
+  LLVMDisposeMemoryBuffer(MB);
 
   return 0;
 }
 
 int llvm_object_list_symbols(void) {
   LLVMMemoryBufferRef MB;
-  LLVMObjectFileRef O;
+  LLVMBinaryRef O;
   LLVMSectionIteratorRef sect;
   LLVMSymbolIteratorRef sym;
-  char *msg = NULL;
 
-  if (LLVMCreateMemoryBufferWithSTDIN(&MB, &msg)) {
-    fprintf(stderr, "Error reading file: %s\n", msg);
+  char *outBufferErr = NULL;
+  if (LLVMCreateMemoryBufferWithSTDIN(&MB, &outBufferErr)) {
+    fprintf(stderr, "Error reading file: %s\n", outBufferErr);
+    free(outBufferErr);
     exit(1);
   }
 
-  O = LLVMCreateObjectFile(MB);
-  if (!O) {
-    fprintf(stderr, "Error reading object\n");
+  char *outBinaryErr = NULL;
+  O = LLVMCreateBinary(MB, LLVMGetGlobalContext(), &outBinaryErr);
+  if (!O || outBinaryErr) {
+    fprintf(stderr, "Error reading object: %s\n", outBinaryErr);
+    free(outBinaryErr);
     exit(1);
   }
 
-  sect = LLVMGetSections(O);
-  sym = LLVMGetSymbols(O);
-  while (!LLVMIsSymbolIteratorAtEnd(O, sym)) {
+  sect = LLVMObjectFileCopySectionIterator(O);
+  sym = LLVMObjectFileCopySymbolIterator(O);
+  while (sect && sym && !LLVMObjectFileIsSymbolIteratorAtEnd(O, sym)) {
 
     LLVMMoveToContainingSection(sect, sym);
     printf("%s @0x%08" PRIx64 " +%" PRIu64 " (%s)\n", LLVMGetSymbolName(sym),
@@ -81,7 +89,9 @@
 
   LLVMDisposeSymbolIterator(sym);
 
-  LLVMDisposeObjectFile(O);
+  LLVMDisposeBinary(O);
+
+  LLVMDisposeMemoryBuffer(MB);
 
   return 0;
 }