aboutsummaryrefslogtreecommitdiff
path: root/src/common/linux/file_id.cc
diff options
context:
space:
mode:
authorjimblandy <jimblandy@4c0a9323-5329-0410-9bdc-e9ce6186880e>2010-02-24 22:36:20 +0000
committerjimblandy <jimblandy@4c0a9323-5329-0410-9bdc-e9ce6186880e>2010-02-24 22:36:20 +0000
commit841ad48a373f3450c075c731560cb02a5bcbc3a3 (patch)
tree0c562d3ec365a89f6ec499475c3b0407bc9a6ec4 /src/common/linux/file_id.cc
parentBreakpad processor: Support negative literals in the postfix evaluator. (diff)
downloadbreakpad-841ad48a373f3450c075c731560cb02a5bcbc3a3.tar.xz
Breakpad Linux symbol dumper: Handle programs linked with --gc-sections.
As explained in the code: Given the right options, the GNU toolchain will omit unreferenced functions from the final executable. Unfortunately, when it does so, it does not remove the associated portions of the line number program; instead, it lets the symbol references in the DW_LNE_set_address instructions pointing to the now-deleted code resolve to zero. Given this input, the DWARF line parser will call AddLine with a series of lines starting at address zero. Rather than collecting series of lines describing code that is not there, we should drop them. Since the linker doesn't explicitly distinguish references to dropped sections from genuine references to zero, we must use a heuristic. We have chosen: - If a line starts at address zero, omit it. (On the platforms breakpad targets, it is extremely unlikely that there will be code at address zero.) - If a line starts immediately after an omitted line, omit it too. a=jimblandy, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@538 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/common/linux/file_id.cc')
0 files changed, 0 insertions, 0 deletions