| Index: tools/binary_size/libsupersize/file_format.py
|
| diff --git a/tools/binary_size/libsupersize/file_format.py b/tools/binary_size/libsupersize/file_format.py
|
| index 537523a8a3834f135aded908c96339df086c6eb5..867d29c5e063030a817baa5eabe231381ff8286a 100644
|
| --- a/tools/binary_size/libsupersize/file_format.py
|
| +++ b/tools/binary_size/libsupersize/file_format.py
|
| @@ -80,10 +80,14 @@ def _SaveSizeInfoToFile(size_info, file_obj):
|
| delta=True)
|
| _LogSize(file_obj, 'path indices') # For libchrome: adds 125kb.
|
|
|
| + prev_aliases = None
|
| for group in by_section:
|
| for symbol in group:
|
| # Do not write name when full_name exists. It will be derived on load.
|
| file_obj.write(symbol.full_name or symbol.name)
|
| + if symbol.aliases and symbol.aliases is not prev_aliases:
|
| + file_obj.write('\t0%x' % symbol.num_aliases)
|
| + prev_aliases = symbol.aliases
|
| if symbol.flags:
|
| file_obj.write('\t%x' % symbol.flags)
|
| file_obj.write('\n')
|
| @@ -132,14 +136,24 @@ def _LoadSizeInfoFromFile(file_obj):
|
| raw_symbols = [None] * sum(section_counts)
|
| symbol_idx = 0
|
| for section_index, cur_section_name in enumerate(section_names):
|
| + alias_counter = 0
|
| for i in xrange(section_counts[section_index]):
|
| - line = next(lines)[:-1]
|
| - name = line
|
| - flags = 0
|
| - last_tab_idx = line.find('\t', -3) # Allows for two digits of flags.
|
| - if last_tab_idx != -1:
|
| - flags = int(line[last_tab_idx + 1:], 16)
|
| - name = line[:last_tab_idx]
|
| + parts = next(lines)[:-1].split('\t')
|
| + flags_part = None
|
| + aliases_part = None
|
| +
|
| + if len(parts) == 3:
|
| + aliases_part = parts[1]
|
| + flags_part = parts[2]
|
| + elif len(parts) == 2:
|
| + if parts[1][0] == '0':
|
| + aliases_part = parts[1]
|
| + else:
|
| + flags_part = parts[1]
|
| +
|
| + name = parts[0]
|
| + flags = int(flags_part, 16) if flags_part else 0
|
| + num_aliases = int(aliases_part, 16) if aliases_part else 0
|
|
|
| new_sym = models.Symbol.__new__(models.Symbol)
|
| new_sym.section_name = cur_section_name
|
| @@ -152,6 +166,18 @@ def _LoadSizeInfoFromFile(file_obj):
|
| new_sym.flags = flags
|
| new_sym.padding = 0 # Derived
|
| new_sym.full_name = None # Derived
|
| +
|
| + if num_aliases:
|
| + assert alias_counter == 0
|
| + new_sym.aliases = [new_sym]
|
| + alias_counter = num_aliases - 1
|
| + elif alias_counter > 0:
|
| + new_sym.aliases = raw_symbols[symbol_idx - 1].aliases
|
| + new_sym.aliases.append(new_sym)
|
| + alias_counter -= 1
|
| + else:
|
| + new_sym.aliases = None
|
| +
|
| raw_symbols[symbol_idx] = new_sym
|
| symbol_idx += 1
|
|
|
| @@ -160,7 +186,7 @@ def _LoadSizeInfoFromFile(file_obj):
|
|
|
| def SaveSizeInfo(size_info, path):
|
| """Saves |size_info| to |path}."""
|
| - if os.environ.get('MEASURE_GZIP') == '1':
|
| + if os.environ.get('SUPERSIZE_MEASURE_GZIP') == '1':
|
| with gzip.open(path, 'wb') as f:
|
| _SaveSizeInfoToFile(size_info, f)
|
| else:
|
|
|