mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-10-06 02:17:20 +00:00
[C++11] Use ObjectFile::sections() in commandline llvm tools
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203802 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -85,10 +85,10 @@ static size_t getNumLengthAsString(uint64_t num) {
|
||||
return result.size();
|
||||
}
|
||||
|
||||
/// @brief Print the size of each section in @p o.
|
||||
/// @brief Print the size of each section in @p Obj.
|
||||
///
|
||||
/// The format used is determined by @c OutputFormat and @c Radix.
|
||||
static void PrintObjectSectionSizes(ObjectFile *o) {
|
||||
static void PrintObjectSectionSizes(ObjectFile *Obj) {
|
||||
uint64_t total = 0;
|
||||
std::string fmtbuf;
|
||||
raw_string_ostream fmt(fmtbuf);
|
||||
@@ -111,17 +111,18 @@ static void PrintObjectSectionSizes(ObjectFile *o) {
|
||||
std::size_t max_name_len = strlen("section");
|
||||
std::size_t max_size_len = strlen("size");
|
||||
std::size_t max_addr_len = strlen("addr");
|
||||
for (section_iterator i = o->section_begin(), e = o->section_end();
|
||||
i != e; ++i) {
|
||||
for (const SectionRef &Section : Obj->sections()) {
|
||||
uint64_t size = 0;
|
||||
if (error(i->getSize(size)))
|
||||
if (error(Section.getSize(size)))
|
||||
return;
|
||||
total += size;
|
||||
|
||||
StringRef name;
|
||||
uint64_t addr = 0;
|
||||
if (error(i->getName(name))) return;
|
||||
if (error(i->getAddress(addr))) return;
|
||||
if (error(Section.getName(name)))
|
||||
return;
|
||||
if (error(Section.getAddress(addr)))
|
||||
return;
|
||||
max_name_len = std::max(max_name_len, name.size());
|
||||
max_size_len = std::max(max_size_len, getNumLengthAsString(size));
|
||||
max_addr_len = std::max(max_addr_len, getNumLengthAsString(addr));
|
||||
@@ -150,20 +151,19 @@ static void PrintObjectSectionSizes(ObjectFile *o) {
|
||||
<< "%#" << max_addr_len << radix_fmt << "\n";
|
||||
|
||||
// Print each section.
|
||||
for (section_iterator i = o->section_begin(), e = o->section_end();
|
||||
i != e; ++i) {
|
||||
for (const SectionRef &Section : Obj->sections()) {
|
||||
StringRef name;
|
||||
uint64_t size = 0;
|
||||
uint64_t addr = 0;
|
||||
if (error(i->getName(name))) return;
|
||||
if (error(i->getSize(size))) return;
|
||||
if (error(i->getAddress(addr))) return;
|
||||
if (error(Section.getName(name)))
|
||||
return;
|
||||
if (error(Section.getSize(size)))
|
||||
return;
|
||||
if (error(Section.getAddress(addr)))
|
||||
return;
|
||||
std::string namestr = name;
|
||||
|
||||
outs() << format(fmt.str().c_str(),
|
||||
namestr.c_str(),
|
||||
size,
|
||||
addr);
|
||||
outs() << format(fmt.str().c_str(), namestr.c_str(), size, addr);
|
||||
}
|
||||
|
||||
// Print total.
|
||||
@@ -181,16 +181,19 @@ static void PrintObjectSectionSizes(ObjectFile *o) {
|
||||
uint64_t total_bss = 0;
|
||||
|
||||
// Make one pass over the section table to calculate sizes.
|
||||
for (section_iterator i = o->section_begin(), e = o->section_end();
|
||||
i != e; ++i) {
|
||||
for (const SectionRef &Section : Obj->sections()) {
|
||||
uint64_t size = 0;
|
||||
bool isText = false;
|
||||
bool isData = false;
|
||||
bool isBSS = false;
|
||||
if (error(i->getSize(size))) return;
|
||||
if (error(i->isText(isText))) return;
|
||||
if (error(i->isData(isData))) return;
|
||||
if (error(i->isBSS(isBSS))) return;
|
||||
if (error(Section.getSize(size)))
|
||||
return;
|
||||
if (error(Section.isText(isText)))
|
||||
return;
|
||||
if (error(Section.isData(isData)))
|
||||
return;
|
||||
if (error(Section.isBSS(isBSS)))
|
||||
return;
|
||||
if (isText)
|
||||
total_text += size;
|
||||
else if (isData)
|
||||
|
Reference in New Issue
Block a user