On 12/05/14 15:41, Caroline Tice wrote:
When hot/cold function splitting occurs, a symbol is generated for the
cold partition, and gets output in the assembly & debug info, but the
symbol currently gets a size of 0 and a type of NOTYPE, as in this
example (on x86_64-linux) from the cold_partition_label test in the
testsuite:

$ readelf -sW cold_partition_label.x02 | grep foo
     36: 0000000000400450     0 NOTYPE  LOCAL  DEFAULT   12 foo.cold.0
     58: 0000000000400490    43 FUNC    GLOBAL DEFAULT   12 foo
$

This patch fixes this by calculating the right size for the partition,
and outputing the size and type fo the cold partition symbol.  After
applying this patch and looking at the same test, I get:

$ readelf -sW cold_partition_label.x02 | grep foo
     36: 0000000000400450    29 FUNC    LOCAL  DEFAULT   12 foo.cold.0
     58: 0000000000400490    43 FUNC    GLOBAL DEFAULT   12 foo
$

This patch has been tested by bootstrapping the compiler, running the
dejagnu testsuite with no regressions, and checked as shown above that
it fixes the original problem.  Is this patch OK to commit to ToT?

-- Caroline Tice
cmt...@google.com

  2014-12-05  Caroline Tice  <cmt...@google.com>

         * final.c (final_scan_insn): Change 'cold_function_name' to
         'cold_partition_name' and make it a global variable; also output
         assembly to give it a 'FUNC' type, if appropriate.
         * varasm.c (cold_partition_name): Declare and initialize global
         variable.
         (assemble_start_function): Re-set value for cold_partition_name.
         (assemble_end_function): Output assembly to calculate size of cold
         partition, and associate size with name, if appropriate.
         * varash.h (cold_partition_name): Add extern declaration for global
         variable.
OK for the trunk. I'm ever-so-slightly worried about the PA and PTX ports are they're probably the most sensitive to types. But we'll deal with them if they complain.

Adding a testcase would be helpful. I believe some of the LTO tests use readelf, so there should be some infrastructure you can factor out and reuse.

jeff

Reply via email to