mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-30 16:17:05 +00:00 
			
		
		
		
	MachOObjectFile in lib/Object currently has no support for parsing the rebase, binding, and export information from the LC_DYLD_INFO load command in final linked mach-o images. This patch adds support for parsing the exports trie data structure. It also adds an option to llvm-objdump to dump that export info. I did the exports parsing first because it is the hardest. The information is encoded in a trie structure, but the standard ObjectFile way to inspect content is through iterators. So I needed to make an iterator that would do a non-recursive walk through the trie and maintain the concatenation of edges needed for the current string prefix. I plan to add similar support in MachOObjectFile and llvm-objdump to parse/display the rebasing and binding info too. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216808 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //===-- llvm-objdump.h ----------------------------------------------------===//
 | |
| //
 | |
| //                     The LLVM Compiler Infrastructure
 | |
| //
 | |
| // This file is distributed under the University of Illinois Open Source
 | |
| // License. See LICENSE.TXT for details.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| 
 | |
| #ifndef LLVM_TOOLS_LLVM_OBJDUMP_LLVM_OBJDUMP_H
 | |
| #define LLVM_TOOLS_LLVM_OBJDUMP_LLVM_OBJDUMP_H
 | |
| 
 | |
| #include "llvm/ADT/StringRef.h"
 | |
| #include "llvm/Support/CommandLine.h"
 | |
| #include "llvm/Support/DataTypes.h"
 | |
| #include "llvm/Support/StringRefMemoryObject.h"
 | |
| 
 | |
| namespace llvm {
 | |
| namespace object {
 | |
|   class COFFObjectFile;
 | |
|   class MachOObjectFile;
 | |
|   class ObjectFile;
 | |
|   class RelocationRef;
 | |
| }
 | |
| 
 | |
| extern cl::opt<std::string> TripleName;
 | |
| extern cl::opt<std::string> ArchName;
 | |
| extern cl::opt<std::string> MCPU;
 | |
| extern cl::list<std::string> MAttrs;
 | |
| 
 | |
| // Various helper functions.
 | |
| bool error(std::error_code ec);
 | |
| bool RelocAddressLess(object::RelocationRef a, object::RelocationRef b);
 | |
| void DumpBytes(StringRef bytes);
 | |
| void DisassembleInputMachO(StringRef Filename);
 | |
| void printCOFFUnwindInfo(const object::COFFObjectFile* o);
 | |
| void printMachOUnwindInfo(const object::MachOObjectFile* o);
 | |
| void printMachOExportsTrie(const object::MachOObjectFile* o);
 | |
| void printELFFileHeader(const object::ObjectFile *o);
 | |
| void printCOFFFileHeader(const object::ObjectFile *o);
 | |
| void printMachOFileHeader(const object::ObjectFile *o);
 | |
| 
 | |
| } // end namespace llvm
 | |
| 
 | |
| #endif
 |