gecko-dev/tools/profiler/lul
Julian Seward 0187151352 Bug 1355136 - LUL on i686/x86_64-linux: allow CFAs to be arbitrary prefix expressions. r=froydnj.
For reasons which are unclear, but possibly due to lack of any known use cases
when the code was written, LUL on i686/x86_64-linux only accepts CFA (canonical
frame address) expressions of the form SP+offset or FP+offset.  However, on
Fedora 25 x86_64 and Ubuntu 16.10 x86_64, at least one address range per object
uses a Dwarf expression for the CFA, for example:

00000018 000000000024 0000001c FDE cie=00000000 pc=0000000031e0..0000000031f0
  DW_CFA_def_cfa_offset: 16
  DW_CFA_advance_loc: 6 to 00000000000031e6
  DW_CFA_def_cfa_offset: 24
  DW_CFA_advance_loc: 10 to 00000000000031f0
  DW_CFA_def_cfa_expression(
          DW_OP_breg7 (rsp): 8; DW_OP_breg16 (rip): 0; DW_OP_lit15; DW_OP_and;
          DW_OP_lit11; DW_OP_ge; DW_OP_lit3; DW_OP_shl; DW_OP_plus)

producing the following complaint from LUL:

  can't summarise: SVMA=0x31f0: rule for DW_REG_CFA: invalid |how|, expr=LExpr(PFXEXPR,0,0)

Given that LUL is capable of handling such a CFA expression, it seems artificial
to stop it doing so.  This patch changes Summariser::Rule() so as to allow such
expressions.
2017-04-12 08:42:02 +02:00
..
AutoObjectMapper.cpp Bug 1339695 (part 3) - Introduce USE_FAULTY_LIB. r=jseward. 2017-02-15 16:24:35 +11:00
AutoObjectMapper.h Bug 1339695 (part 10) - Rename SPS_* macros as GP_*. r=jseward. 2017-02-18 00:57:03 +11:00
LulCommon.cpp Bug 1237151 (part 3) - Remove ignored qualifiers in all remaining code. r=froydnj. 2016-01-05 17:08:45 -08:00
LulCommonExt.h Bug 1237151 (part 3) - Remove ignored qualifiers in all remaining code. r=froydnj. 2016-01-05 17:08:45 -08:00
LulDwarf.cpp Bug 1293384 - Part 1: Rename snprintf_literal to SprintfLiteral. r=froydnj 2016-08-14 23:44:00 -07:00
LulDwarfExt.h Bug 1237151 (part 3) - Remove ignored qualifiers in all remaining code. r=froydnj. 2016-01-05 17:08:45 -08:00
LulDwarfInt.h
LulDwarfSummariser.cpp Bug 1355136 - LUL on i686/x86_64-linux: allow CFAs to be arbitrary prefix expressions. r=froydnj. 2017-04-12 08:42:02 +02:00
LulDwarfSummariser.h
LulElf.cpp Bug 1339695 (part 10) - Rename SPS_* macros as GP_*. r=jseward. 2017-02-18 00:57:03 +11:00
LulElfExt.h
LulElfInt.h Bug 1339695 (part 10) - Rename SPS_* macros as GP_*. r=jseward. 2017-02-18 00:57:03 +11:00
LulMain.cpp Bug 1339695 (part 10) - Rename SPS_* macros as GP_*. r=jseward. 2017-02-18 00:57:03 +11:00
LulMain.h Bug 1339695 (part 10) - Rename SPS_* macros as GP_*. r=jseward. 2017-02-18 00:57:03 +11:00
LulMainInt.h Bug 1343557 - Make PfxInstr::operator== const; r=jseward 2017-03-01 15:26:29 -05:00
platform-linux-lul.cpp Bug 1354546 - Make LUL read CFI from the main executable on x86_64-Linux. r=n.nethercote. 2017-04-12 07:56:58 +02:00
platform-linux-lul.h Bug 1342306 (part 3) - Properly synchronize the global state in platform*.cpp. r=mstange. 2017-03-08 12:40:39 +11:00