diff options
author | Daniel RodrÃguez Troitiño <drodriguez@users.noreply.github.com> | 2024-09-24 10:55:35 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-24 10:55:35 -0700 |
commit | 12285cca5ed713dfd483bd96422a5607b8af0085 (patch) | |
tree | 28075ce5ff1fd997280e2528ecf3e0ae32a89960 /llvm/lib/CodeGen/MachineBlockPlacement.cpp | |
parent | 26029d77a57cb4aaa1479064109e985a90d0edd8 (diff) | |
download | llvm-12285cca5ed713dfd483bd96422a5607b8af0085.zip llvm-12285cca5ed713dfd483bd96422a5607b8af0085.tar.gz llvm-12285cca5ed713dfd483bd96422a5607b8af0085.tar.bz2 |
[DWARF] Use ULEB128 and not just one byte for directory indices (#109067)
According to the standard `DW_LNCT_directory_index` can be `data1`,
`data2`, or `udata` (see 6.2.4.1). The code was using `data1`, but this
limits the number of directories to 256, even if the variable holding
the directory index is a `uint64_t`. `dsymutil` was hitting an assertion
when trying to write directory indices higher than 255.
Modify the classic and the parallel DWARF linkers to use `udata` and
encode the directory indices as ULEB128 and provide a test that has more
than 256 directories to check the changes are working as expected.
For people that were using `dsymutil` with CUs that had between 128-256
directories, this will mean that for those indices 2 bytes will be used
now, instead of just one.
Diffstat (limited to 'llvm/lib/CodeGen/MachineBlockPlacement.cpp')
0 files changed, 0 insertions, 0 deletions