Fix -u option in dsymutil, to not emit an extra DW_LNE_set_address if the original...
authorShubham Sandeep Rastogi <srastogi22@apple.com>
Fri, 26 May 2023 19:05:09 +0000 (12:05 -0700)
committerShubham Sandeep Rastogi <srastogi22@apple.com>
Wed, 31 May 2023 04:37:43 +0000 (21:37 -0700)
commit9bd3ff8bf9e05e7bf95a4a068aa3b50813a93975
tree5073ee63eb184f38cd2040047f9f44a9ef41b1fb
parent0a4ba485c960f76edd6fd8a5fec8bf4350710025
Fix -u option in dsymutil, to not emit an extra DW_LNE_set_address if the original line table was empty

With dsymutil's -u option, only the accelerator tables should be
updated, but with https://reviews.llvm.org/D150554 the -u option will
still re-generate the line table. If the line table was empty, that is,
it was a dummy line table, with no entries in it, dsymutil will always
generate a line table with a DW_LNE_end_sequence, a funky side effect of
this is that when the line table is re-generated, it will always emit a
DW_LNE_set_address first, which will change the line table total size.
This patch addresses this by making sure that if all the line table has
in it is a DW_LNE_end_sequence, it is the same as a dummy entry.

Differential Revision: https://reviews.llvm.org/D151579
llvm/lib/DWARFLinker/DWARFLinker.cpp
llvm/test/tools/dsymutil/ARM/fat-dylib-update.test [new file with mode: 0644]