aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coreutils/od_bloaty.c34
-rwxr-xr-xscripts/bloat-o-meter2
2 files changed, 18 insertions, 18 deletions
diff --git a/coreutils/od_bloaty.c b/coreutils/od_bloaty.c
index b818521e4..9f1a582ef 100644
--- a/coreutils/od_bloaty.c
+++ b/coreutils/od_bloaty.c
@@ -845,17 +845,18 @@ format_address_none(off_t address ATTRIBUTE_UNUSED, char c ATTRIBUTE_UNUSED)
845{ 845{
846} 846}
847 847
848static int address_pad_len; 848static char address_fmt[] = "%0n"OFF_FMT"xc";
849static char address_fmt[] = "%0*"OFF_FMT"xc";
850/* Corresponds to 'x' above */ 849/* Corresponds to 'x' above */
851#define address_base_char address_fmt[sizeof(address_fmt)-3] 850#define address_base_char address_fmt[sizeof(address_fmt)-3]
851/* Corresponds to 'n' above */
852#define address_pad_len_char address_fmt[2]
852 853
853static void 854static void
854format_address_std(off_t address, char c) 855format_address_std(off_t address, char c)
855{ 856{
856 /* Corresponds to 'c' */ 857 /* Corresponds to 'c' */
857 address_fmt[sizeof(address_fmt)-2] = c; 858 address_fmt[sizeof(address_fmt)-2] = c;
858 printf(address_fmt, address_pad_len, address); 859 printf(address_fmt, address);
859} 860}
860 861
861#if ENABLE_GETOPT_LONG 862#if ENABLE_GETOPT_LONG
@@ -865,6 +866,7 @@ format_address_paren(off_t address, char c)
865{ 866{
866 putchar('('); 867 putchar('(');
867 format_address_std(address, ')'); 868 format_address_std(address, ')');
869 /* BUG in coreutils 5.2.1! must be "if (c) putchar(c);" */
868 putchar(c); 870 putchar(c);
869} 871}
870 872
@@ -926,7 +928,7 @@ write_block(off_t current_offset, size_t n_bytes,
926 if (i == 0) 928 if (i == 0)
927 format_address(current_offset, '\0'); 929 format_address(current_offset, '\0');
928 else 930 else
929 printf("%*s", address_pad_len, ""); 931 printf("%*s", address_pad_len_char - '0', "");
930 (*spec[i].print_function) (n_bytes, curr_block, spec[i].fmt_string); 932 (*spec[i].print_function) (n_bytes, curr_block, spec[i].fmt_string);
931 if (spec[i].hexl_mode_trailer) { 933 if (spec[i].hexl_mode_trailer) {
932 /* space-pad out to full line width, then dump the trailer */ 934 /* space-pad out to full line width, then dump the trailer */
@@ -1261,7 +1263,7 @@ od_main(int argc, char **argv)
1261 spec = NULL; 1263 spec = NULL;
1262 format_address = format_address_std; 1264 format_address = format_address_std;
1263 address_base_char = 'o'; 1265 address_base_char = 'o';
1264 address_pad_len = 7; 1266 address_pad_len_char = '7';
1265 flag_dump_strings = 0; 1267 flag_dump_strings = 0;
1266 1268
1267 /* Parse command line */ 1269 /* Parse command line */
@@ -1279,14 +1281,12 @@ od_main(int argc, char **argv)
1279 argv += optind; 1281 argv += optind;
1280 if (opt & OPT_A) { 1282 if (opt & OPT_A) {
1281 static const char doxn[] = "doxn"; 1283 static const char doxn[] = "doxn";
1282 static FN_format_address *const doxn_format_address[] = { 1284 static const char doxn_address_base_char[] = {
1283 format_address_std, 1285 'u', 'o', 'x', /* '?' fourth one is not important */
1284 format_address_std, 1286 };
1285 format_address_std, 1287 static const uint8_t doxn_address_pad_len_char[] = {
1286 format_address_none, 1288 '7', '7', '6', /* '?' */
1287 }; 1289 };
1288 static const char doxn_address_base_char[] = { 'u', 'o', 'x', 'x' };
1289 static const uint8_t doxn_address_pad_len[] = { 7, 7, 6, 0 };
1290 char *p; 1290 char *p;
1291 int pos; 1291 int pos;
1292 p = strchr(doxn, str_A[0]); 1292 p = strchr(doxn, str_A[0]);
@@ -1294,9 +1294,9 @@ od_main(int argc, char **argv)
1294 bb_error_msg_and_die("bad output address radix " 1294 bb_error_msg_and_die("bad output address radix "
1295 "'%c' (must be [doxn])", str_A[0]); 1295 "'%c' (must be [doxn])", str_A[0]);
1296 pos = p - doxn; 1296 pos = p - doxn;
1297 format_address = doxn_format_address[pos]; 1297 if (pos == 3) format_address = format_address_none;
1298 address_base_char = doxn_address_base_char[pos]; 1298 address_base_char = doxn_address_base_char[pos];
1299 address_pad_len = doxn_address_pad_len[pos]; 1299 address_pad_len_char = doxn_address_pad_len_char[pos];
1300 } 1300 }
1301 if (opt & OPT_N) { 1301 if (opt & OPT_N) {
1302 limit_bytes_to_format = 1; 1302 limit_bytes_to_format = 1;
@@ -1389,12 +1389,12 @@ od_main(int argc, char **argv)
1389 } 1389 }
1390 1390
1391 if (flag_pseudo_start) { 1391 if (flag_pseudo_start) {
1392 format_address = format_address_label;
1393 if (format_address == format_address_none) { 1392 if (format_address == format_address_none) {
1394 address_base_char = 'o'; 1393 address_base_char = 'o';
1395 address_pad_len = 7; 1394 address_pad_len_char = '7';
1396 format_address = format_address_paren; 1395 format_address = format_address_paren;
1397 } 1396 } else
1397 format_address = format_address_label;
1398 } 1398 }
1399 } 1399 }
1400#endif 1400#endif
diff --git a/scripts/bloat-o-meter b/scripts/bloat-o-meter
index 31364fe11..67b3d290d 100755
--- a/scripts/bloat-o-meter
+++ b/scripts/bloat-o-meter
@@ -17,7 +17,7 @@ def getsizes(file):
17 sym = {} 17 sym = {}
18 for l in os.popen("nm --size-sort " + file).readlines(): 18 for l in os.popen("nm --size-sort " + file).readlines():
19 size, type, name = l[:-1].split() 19 size, type, name = l[:-1].split()
20 if type in "tTdDbB": 20 if type in "tTdDbBrR":
21 if "." in name: name = "static." + name.split(".")[0] 21 if "." in name: name = "static." + name.split(".")[0]
22 sym[name] = sym.get(name, 0) + int(size, 16) 22 sym[name] = sym.get(name, 0) + int(size, 16)
23 for l in os.popen("readelf -S " + file).readlines(): 23 for l in os.popen("readelf -S " + file).readlines():