summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis/calcrom/calcrom.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/.travis/calcrom/calcrom.cpp b/.travis/calcrom/calcrom.cpp
index 17264df..b9e9e3f 100644
--- a/.travis/calcrom/calcrom.cpp
+++ b/.travis/calcrom/calcrom.cpp
@@ -99,6 +99,7 @@ void analyze(string basedir, string version) {
// data _____|_____
// text |
unsigned sizes[2][2] = {{0, 0}, {0, 0}};
+ unsigned split_code_sizes[2] = {0, 0};
char * shstrtab = NULL;
size_t shstrsz = 0;
stringstream builddir;
@@ -111,6 +112,9 @@ void analyze(string basedir, string version) {
string fname_s(fname);
string ext = fname_s.substr(fname_s.rfind('.'), 4);
bool is_asm = ext == ".s";
+ string fileroot = fname_s.substr(fname_s.rfind('/') + 1);
+ bool is_unsplit = (is_asm && fileroot.rfind("text_", 0) == 0);
+
fname_s = fname_s.replace(fname_s.find(basedir), basedir.length(), basebuilddir.str());
fname_s = fname_s.replace(fname_s.rfind('.'), 4, ".o");
elf.open(fname_s, ios_base::in | ios_base::binary);
@@ -156,6 +160,10 @@ void analyze(string basedir, string version) {
if (is_text || is_data)
{
sizes[is_text][is_asm] += size;
+ if (is_text && is_asm)
+ {
+ split_code_sizes[is_unsplit] += size;
+ }
}
}
}
@@ -167,9 +175,16 @@ void analyze(string basedir, string version) {
double total_text_d = total_text;
double src_text_d = sizes[1][0];
double asm_text_d = sizes[1][1];
+ double split_asm_text_d = split_code_sizes[0];
+ double unsplit_asm_text_d = split_code_sizes[1];
+
cout << " " << total_text << " total bytes of code" << endl;
cout << " " << sizes[1][0] << " bytes of code in src (" << (src_text_d / total_text_d * 100.0) << "%)" << endl;
cout << " " << sizes[1][1] << " bytes of code in asm (" << (asm_text_d / total_text_d * 100.0) << "%)" << endl;
+ if (sizes[1][1] > 0) {
+ cout << " " << split_code_sizes[0] << " bytes of asm code in split files (" << (split_asm_text_d / asm_text_d * 100.0) << "%)" << endl;
+ cout << " " << split_code_sizes[1] << " bytes of asm code in unsplit files (" << (unsplit_asm_text_d / asm_text_d * 100.0) << "%)" << endl;
+ }
cout << endl;
// Report data
unsigned total_data = sizes[0][0] + sizes[0][1];