mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 04:33:05 +00:00
Add a -raw option to the -section mode of llvm-objdump.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233390 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a9902daa5c
commit
1fa94d6f92
5
test/tools/llvm-objdump/macho-sections.test
Normal file
5
test/tools/llvm-objdump/macho-sections.test
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# RUN: llvm-objdump -macho -section=__data %p/Inputs/bind2.macho-x86_64 | FileCheck %s
|
||||||
|
# RUN: llvm-objdump -macho -section=__data -raw %p/Inputs/bind2.macho-x86_64 | FileCheck --check-prefix=RAW %s
|
||||||
|
|
||||||
|
# CHECK: bind2.macho-x86_64:
|
||||||
|
# RAW-NOT: bind2.macho-x86_64:
|
@ -99,6 +99,9 @@ cl::list<std::string>
|
|||||||
cl::desc("Prints the specified segment,section for "
|
cl::desc("Prints the specified segment,section for "
|
||||||
"Mach-O objects (requires -macho)"));
|
"Mach-O objects (requires -macho)"));
|
||||||
|
|
||||||
|
cl::opt<bool> llvm::Raw("raw",
|
||||||
|
cl::desc("Have -section dump the raw binary contents"));
|
||||||
|
|
||||||
cl::opt<bool>
|
cl::opt<bool>
|
||||||
llvm::InfoPlist("info-plist",
|
llvm::InfoPlist("info-plist",
|
||||||
cl::desc("Print the info plist section as strings for "
|
cl::desc("Print the info plist section as strings for "
|
||||||
@ -1043,8 +1046,7 @@ static void DumpSectionContents(StringRef Filename, MachOObjectFile *O,
|
|||||||
StringRef SegName = O->getSectionFinalSegmentName(Ref);
|
StringRef SegName = O->getSectionFinalSegmentName(Ref);
|
||||||
if ((DumpSegName.empty() || SegName == DumpSegName) &&
|
if ((DumpSegName.empty() || SegName == DumpSegName) &&
|
||||||
(SectName == DumpSectName)) {
|
(SectName == DumpSectName)) {
|
||||||
outs() << "Contents of (" << SegName << "," << SectName
|
|
||||||
<< ") section\n";
|
|
||||||
uint32_t section_flags;
|
uint32_t section_flags;
|
||||||
if (O->is64Bit()) {
|
if (O->is64Bit()) {
|
||||||
const MachO::section_64 Sec = O->getSection64(Ref);
|
const MachO::section_64 Sec = O->getSection64(Ref);
|
||||||
@ -1062,6 +1064,14 @@ static void DumpSectionContents(StringRef Filename, MachOObjectFile *O,
|
|||||||
uint32_t sect_size = BytesStr.size();
|
uint32_t sect_size = BytesStr.size();
|
||||||
uint64_t sect_addr = Section.getAddress();
|
uint64_t sect_addr = Section.getAddress();
|
||||||
|
|
||||||
|
if (Raw) {
|
||||||
|
outs().write(BytesStr.data(), BytesStr.size());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
outs() << "Contents of (" << SegName << "," << SectName
|
||||||
|
<< ") section\n";
|
||||||
|
|
||||||
if (verbose) {
|
if (verbose) {
|
||||||
if ((section_flags & MachO::S_ATTR_PURE_INSTRUCTIONS) ||
|
if ((section_flags & MachO::S_ATTR_PURE_INSTRUCTIONS) ||
|
||||||
(section_flags & MachO::S_ATTR_SOME_INSTRUCTIONS)) {
|
(section_flags & MachO::S_ATTR_SOME_INSTRUCTIONS)) {
|
||||||
@ -1181,7 +1191,7 @@ static void ProcessMachO(StringRef Filename, MachOObjectFile *MachOOF,
|
|||||||
// UniversalHeaders or ArchiveHeaders.
|
// UniversalHeaders or ArchiveHeaders.
|
||||||
if (Disassemble || PrivateHeaders || ExportsTrie || Rebase || Bind ||
|
if (Disassemble || PrivateHeaders || ExportsTrie || Rebase || Bind ||
|
||||||
LazyBind || WeakBind || IndirectSymbols || DataInCode || LinkOptHints ||
|
LazyBind || WeakBind || IndirectSymbols || DataInCode || LinkOptHints ||
|
||||||
DylibsUsed || DylibId || DumpSections.size() != 0) {
|
DylibsUsed || DylibId || (DumpSections.size() != 0 && !Raw)) {
|
||||||
outs() << Filename;
|
outs() << Filename;
|
||||||
if (!ArchiveMemberName.empty())
|
if (!ArchiveMemberName.empty())
|
||||||
outs() << '(' << ArchiveMemberName << ')';
|
outs() << '(' << ArchiveMemberName << ')';
|
||||||
|
@ -27,6 +27,7 @@ extern cl::opt<std::string> ArchName;
|
|||||||
extern cl::opt<std::string> MCPU;
|
extern cl::opt<std::string> MCPU;
|
||||||
extern cl::list<std::string> MAttrs;
|
extern cl::list<std::string> MAttrs;
|
||||||
extern cl::list<std::string> DumpSections;
|
extern cl::list<std::string> DumpSections;
|
||||||
|
extern cl::opt<bool> Raw;
|
||||||
extern cl::opt<bool> Disassemble;
|
extern cl::opt<bool> Disassemble;
|
||||||
extern cl::opt<bool> NoShowRawInsn;
|
extern cl::opt<bool> NoShowRawInsn;
|
||||||
extern cl::opt<bool> PrivateHeaders;
|
extern cl::opt<bool> PrivateHeaders;
|
||||||
|
Loading…
Reference in New Issue
Block a user