[BOLT][DWARF] Properly emit of end-of-sequence entries for line tables
Summary: When the compiler emits line table program, it emits EOS using the label at the end of the containing code section. Since each compilation unit has its own set of code sections it works as expected (* see the excerpt from the standard below). However, in BOLT the code from many CUs is combined into a common section, such as hot text or cold text. As a result, the symbol at the end of the section may point way past the code sequence for a given unit. Since we can emit functions in any order, we conservatively emit end-of-sequence at the end of every emitted function. Fixes a problem while intermixing source code with disassembly in binutils' objdump. (*) DWARF v4 6.2.5.3: "Every line number program sequence must end with a DW_LNE_end_sequence instruction which creates a row whose address is that of the byte after the last target machine instruction of the sequence." (cherry picked from FBD31347870)
Loading
Please sign in to comment