mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-30 02:25:19 +00:00
Use early returns and factor the object::Binary creation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200484 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -44,11 +44,7 @@ using namespace llvm;
|
|||||||
using namespace object;
|
using namespace object;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
enum OutputFormatTy {
|
enum OutputFormatTy { bsd, sysv, posix };
|
||||||
bsd,
|
|
||||||
sysv,
|
|
||||||
posix
|
|
||||||
};
|
|
||||||
cl::opt<OutputFormatTy> OutputFormat(
|
cl::opt<OutputFormatTy> OutputFormat(
|
||||||
"format", cl::desc("Specify output format"),
|
"format", cl::desc("Specify output format"),
|
||||||
cl::values(clEnumVal(bsd, "BSD format"), clEnumVal(sysv, "System V format"),
|
cl::values(clEnumVal(bsd, "BSD format"), clEnumVal(sysv, "System V format"),
|
||||||
@@ -581,13 +577,15 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
|
|||||||
dumpSymbolNamesFromModule(Result);
|
dumpSymbolNamesFromModule(Result);
|
||||||
delete Result;
|
delete Result;
|
||||||
}
|
}
|
||||||
} else if (Magic == sys::fs::file_magic::archive) {
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ErrorOr<Binary *> BinaryOrErr = object::createBinary(Buffer.take(), Magic);
|
ErrorOr<Binary *> BinaryOrErr = object::createBinary(Buffer.take(), Magic);
|
||||||
if (error(BinaryOrErr.getError(), Filename))
|
if (error(BinaryOrErr.getError(), Filename))
|
||||||
return;
|
return;
|
||||||
OwningPtr<Binary> Arch(BinaryOrErr.get());
|
OwningPtr<Binary> Bin(BinaryOrErr.get());
|
||||||
|
|
||||||
if (object::Archive *A = dyn_cast<object::Archive>(Arch.get())) {
|
if (object::Archive *A = dyn_cast<object::Archive>(Bin.get())) {
|
||||||
if (ArchiveMap) {
|
if (ArchiveMap) {
|
||||||
object::Archive::symbol_iterator I = A->symbol_begin();
|
object::Archive::symbol_iterator I = A->symbol_begin();
|
||||||
object::Archive::symbol_iterator E = A->symbol_end();
|
object::Archive::symbol_iterator E = A->symbol_end();
|
||||||
@@ -633,15 +631,10 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
|
|||||||
dumpSymbolNamesFromObject(O);
|
dumpSymbolNamesFromObject(O);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else if (Magic == sys::fs::file_magic::macho_universal_binary) {
|
|
||||||
ErrorOr<Binary *> BinaryOrErr = object::createBinary(Buffer.take(), Magic);
|
|
||||||
if (error(BinaryOrErr.getError(), Filename))
|
|
||||||
return;
|
return;
|
||||||
OwningPtr<Binary> Bin(BinaryOrErr.get());
|
}
|
||||||
|
if (object::MachOUniversalBinary *UB =
|
||||||
object::MachOUniversalBinary *UB =
|
dyn_cast<object::MachOUniversalBinary>(Bin.get())) {
|
||||||
cast<object::MachOUniversalBinary>(Bin.get());
|
|
||||||
for (object::MachOUniversalBinary::object_iterator I = UB->begin_objects(),
|
for (object::MachOUniversalBinary::object_iterator I = UB->begin_objects(),
|
||||||
E = UB->end_objects();
|
E = UB->end_objects();
|
||||||
I != E; ++I) {
|
I != E; ++I) {
|
||||||
@@ -651,17 +644,14 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
|
|||||||
dumpSymbolNamesFromObject(Obj.get());
|
dumpSymbolNamesFromObject(Obj.get());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (Magic.is_object()) {
|
|
||||||
ErrorOr<Binary *> BinaryOrErr = object::createBinary(Buffer.take(), Magic);
|
|
||||||
if (error(BinaryOrErr.getError(), Filename))
|
|
||||||
return;
|
|
||||||
OwningPtr<Binary> Obj(BinaryOrErr.get());
|
|
||||||
if (object::ObjectFile *O = dyn_cast<ObjectFile>(Obj.get()))
|
|
||||||
dumpSymbolNamesFromObject(O);
|
|
||||||
} else {
|
|
||||||
error("unrecognizable file type", Filename);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (object::ObjectFile *O = dyn_cast<ObjectFile>(Bin.get())) {
|
||||||
|
dumpSymbolNamesFromObject(O);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
error("unrecognizable file type", Filename);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
|
Reference in New Issue
Block a user