[llvm-objdump/MachODump] Reduce code duplication.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255380 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Davide Italiano 2015-12-11 22:27:59 +00:00
parent fce620f39a
commit 70ed0f67e1

View File

@ -5159,75 +5159,47 @@ static void printObjc2_64bit_MetaData(MachOObjectFile *O, bool verbose) {
info.adrp_inst = 0;
info.depth = 0;
const SectionRef CL = get_section(O, "__OBJC2", "__class_list");
if (CL != SectionRef()) {
info.S = CL;
walk_pointer_list_64("class", CL, O, &info, print_class64_t);
} else {
const SectionRef CL = get_section(O, "__DATA", "__objc_classlist");
info.S = CL;
walk_pointer_list_64("class", CL, O, &info, print_class64_t);
}
SectionRef CL = get_section(O, "__OBJC2", "__class_list");
if (CL == SectionRef())
CL = get_section(O, "__DATA", "__objc_classlist");
info.S = CL;
walk_pointer_list_64("class", CL, O, &info, print_class64_t);
const SectionRef CR = get_section(O, "__OBJC2", "__class_refs");
if (CR != SectionRef()) {
info.S = CR;
walk_pointer_list_64("class refs", CR, O, &info, nullptr);
} else {
const SectionRef CR = get_section(O, "__DATA", "__objc_classrefs");
info.S = CR;
walk_pointer_list_64("class refs", CR, O, &info, nullptr);
}
SectionRef CR = get_section(O, "__OBJC2", "__class_refs");
if (CR == SectionRef())
CR = get_section(O, "__DATA", "__objc_classrefs");
info.S = CR;
walk_pointer_list_64("class refs", CR, O, &info, nullptr);
const SectionRef SR = get_section(O, "__OBJC2", "__super_refs");
if (SR != SectionRef()) {
info.S = SR;
walk_pointer_list_64("super refs", SR, O, &info, nullptr);
} else {
const SectionRef SR = get_section(O, "__DATA", "__objc_superrefs");
info.S = SR;
walk_pointer_list_64("super refs", SR, O, &info, nullptr);
}
SectionRef SR = get_section(O, "__OBJC2", "__super_refs");
if (SR == SectionRef())
SR = get_section(O, "__DATA", "__objc_superrefs");
info.S = SR;
walk_pointer_list_64("super refs", SR, O, &info, nullptr);
const SectionRef CA = get_section(O, "__OBJC2", "__category_list");
if (CA != SectionRef()) {
info.S = CA;
walk_pointer_list_64("category", CA, O, &info, print_category64_t);
} else {
const SectionRef CA = get_section(O, "__DATA", "__objc_catlist");
info.S = CA;
walk_pointer_list_64("category", CA, O, &info, print_category64_t);
}
SectionRef CA = get_section(O, "__OBJC2", "__category_list");
if (CA == SectionRef())
CA = get_section(O, "__DATA", "__objc_catlist");
info.S = CA;
walk_pointer_list_64("category", CA, O, &info, print_category64_t);
const SectionRef PL = get_section(O, "__OBJC2", "__protocol_list");
if (PL != SectionRef()) {
info.S = PL;
walk_pointer_list_64("protocol", PL, O, &info, nullptr);
} else {
const SectionRef PL = get_section(O, "__DATA", "__objc_protolist");
info.S = PL;
walk_pointer_list_64("protocol", PL, O, &info, nullptr);
}
SectionRef PL = get_section(O, "__OBJC2", "__protocol_list");
if (PL == SectionRef())
PL = get_section(O, "__DATA", "__objc_protolist");
info.S = PL;
walk_pointer_list_64("protocol", PL, O, &info, nullptr);
const SectionRef MR = get_section(O, "__OBJC2", "__message_refs");
if (MR != SectionRef()) {
info.S = MR;
print_message_refs64(MR, &info);
} else {
const SectionRef MR = get_section(O, "__DATA", "__objc_msgrefs");
info.S = MR;
print_message_refs64(MR, &info);
}
SectionRef MR = get_section(O, "__OBJC2", "__message_refs");
if (MR == SectionRef())
MR = get_section(O, "__DATA", "__objc_msgrefs");
info.S = MR;
print_message_refs64(MR, &info);
const SectionRef II = get_section(O, "__OBJC2", "__image_info");
if (II != SectionRef()) {
info.S = II;
print_image_info64(II, &info);
} else {
const SectionRef II = get_section(O, "__DATA", "__objc_imageinfo");
info.S = II;
print_image_info64(II, &info);
}
SectionRef II = get_section(O, "__OBJC2", "__image_info");
if (II == SectionRef())
II = get_section(O, "__DATA", "__objc_imageinfo");
info.S = II;
print_image_info64(II, &info);
if (info.bindtable != nullptr)
delete info.bindtable;