summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-c-test
diff options
context:
space:
mode:
authorRobert Widmann <devteam.codafi@gmail.com>2019-04-09 21:53:31 +0000
committerRobert Widmann <devteam.codafi@gmail.com>2019-04-09 21:53:31 +0000
commitd1ba3b13f83ebb7a76b62cacb1a97006c8d9f4b3 (patch)
tree35502407a8ddfdf11f7a70209c690f94d12f72df /llvm/tools/llvm-c-test
parent60f83544bb373debc0568cc001f26b82cf803e88 (diff)
downloadbcm5719-llvm-d1ba3b13f83ebb7a76b62cacb1a97006c8d9f4b3.tar.gz
bcm5719-llvm-d1ba3b13f83ebb7a76b62cacb1a97006c8d9f4b3.zip
[LLVM-C] Add Section and Symbol Iterator Accessors for Object File Binaries
Summary: This brings us to full feature parity with the old API, so I've deprecated it and updated the tests. I'll do a follow-up patch to do some more cleanup and documentation work in this header. Reviewers: whitequark, deadalnix Reviewed By: whitequark Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60407 llvm-svn: 358037
Diffstat (limited to 'llvm/tools/llvm-c-test')
-rw-r--r--llvm/tools/llvm-c-test/object.c52
1 files changed, 31 insertions, 21 deletions
diff --git a/llvm/tools/llvm-c-test/object.c b/llvm/tools/llvm-c-test/object.c
index 278911b0bc6..53ffb1acaff 100644
--- a/llvm/tools/llvm-c-test/object.c
+++ b/llvm/tools/llvm-c-test/object.c
@@ -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 @@ int llvm_object_list_sections(void) {
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 @@ int llvm_object_list_symbols(void) {
LLVMDisposeSymbolIterator(sym);
- LLVMDisposeObjectFile(O);
+ LLVMDisposeBinary(O);
+
+ LLVMDisposeMemoryBuffer(MB);
return 0;
}
OpenPOWER on IntegriCloud