<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp, branch users/nico/python-2</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>Reapply "[NFC][DebugInfo][DWARF] Create new low-level dwarf library (#… (#145959) (#146112)</title>
<updated>2025-06-27T18:05:49+00:00</updated>
<author>
<name>Sterling-Augustine</name>
<email>56981066+Sterling-Augustine@users.noreply.github.com</email>
</author>
<published>2025-06-27T18:05:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=23f1ba3ee456c8d691d1e7aba25de92fb9ba39e6'/>
<id>23f1ba3ee456c8d691d1e7aba25de92fb9ba39e6</id>
<content type='text'>
Reapply "[NFC][DebugInfo][DWARF] Create new low-level dwarf library (#…
(#145959)
    
This reapplies cbf781f0bdf2f680abbe784faedeefd6f84c246e, with fixes for
the shared-library build and the unconventional sanitizer-runtime build.

Original Description:

This is the culmination of a series of changes described in [1].
    
Although somewhat large by line count, it is almost entirely mechanical,
creating a new library in DebugInfo/DWARF/LowLevel. This new library has
very minimal dependencies, allowing it to be used from more places than
the normal DebugInfo/DWARF library--in particular from MC.
    
1.
https://discourse.llvm.org/t/rfc-debuginfo-dwarf-refactor-into-to-lower-and-higher-level-libraries/86665/2</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reapply "[NFC][DebugInfo][DWARF] Create new low-level dwarf library (#…
(#145959)
    
This reapplies cbf781f0bdf2f680abbe784faedeefd6f84c246e, with fixes for
the shared-library build and the unconventional sanitizer-runtime build.

Original Description:

This is the culmination of a series of changes described in [1].
    
Although somewhat large by line count, it is almost entirely mechanical,
creating a new library in DebugInfo/DWARF/LowLevel. This new library has
very minimal dependencies, allowing it to be used from more places than
the normal DebugInfo/DWARF library--in particular from MC.
    
1.
https://discourse.llvm.org/t/rfc-debuginfo-dwarf-refactor-into-to-lower-and-higher-level-libraries/86665/2</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[NFC][DebugInfo][DWARF] Create new low-level dwarf library (#… (#145959)</title>
<updated>2025-06-26T20:09:20+00:00</updated>
<author>
<name>Sterling-Augustine</name>
<email>56981066+Sterling-Augustine@users.noreply.github.com</email>
</author>
<published>2025-06-26T20:09:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5d03e7a2047c0927037275418ae340d83f5c70fb'/>
<id>5d03e7a2047c0927037275418ae340d83f5c70fb</id>
<content type='text'>
…145081)"

This reverts commit cbf781f0bdf2f680abbe784faedeefd6f84c246e.

Breaks a couple of buildbots.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
…145081)"

This reverts commit cbf781f0bdf2f680abbe784faedeefd6f84c246e.

Breaks a couple of buildbots.</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][DebugInfo][DWARF] Create new low-level dwarf library (#145081)</title>
<updated>2025-06-26T18:23:46+00:00</updated>
<author>
<name>Sterling-Augustine</name>
<email>56981066+Sterling-Augustine@users.noreply.github.com</email>
</author>
<published>2025-06-26T18:23:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=cbf781f0bdf2f680abbe784faedeefd6f84c246e'/>
<id>cbf781f0bdf2f680abbe784faedeefd6f84c246e</id>
<content type='text'>
This is the culmination of a series of changes described in [1].
    
Although somewhat large by line count, it is almost entirely mechanical,
creating a new library in DebugInfo/DWARF/LowLevel. This new library has
very minimal dependencies, allowing it to be used from more places than
the normal DebugInfo/DWARF library--in particular from MC.
    
I am happy to put it in another location, or to structure it differently
if that makes sense. Some have suggested in BinaryFormat, but it is not
a great fit there. But if that makes more sense to the reviewers, I can
do that.
 
Another possibility would be to use pass-through headers to allow
clients who don't care to depend only on DebugInfo/DWARF. This would be
a much less invasive change, and perhaps easier for clients. But also a
system that hides details.

Either way, I'm open.

1.
https://discourse.llvm.org/t/rfc-debuginfo-dwarf-refactor-into-to-lower-and-higher-level-libraries/86665/2</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is the culmination of a series of changes described in [1].
    
Although somewhat large by line count, it is almost entirely mechanical,
creating a new library in DebugInfo/DWARF/LowLevel. This new library has
very minimal dependencies, allowing it to be used from more places than
the normal DebugInfo/DWARF library--in particular from MC.
    
I am happy to put it in another location, or to structure it differently
if that makes sense. Some have suggested in BinaryFormat, but it is not
a great fit there. But if that makes more sense to the reviewers, I can
do that.
 
Another possibility would be to use pass-through headers to allow
clients who don't care to depend only on DebugInfo/DWARF. This would be
a much less invasive change, and perhaps easier for clients. But also a
system that hides details.

Either way, I'm open.

1.
https://discourse.llvm.org/t/rfc-debuginfo-dwarf-refactor-into-to-lower-and-higher-level-libraries/86665/2</pre>
</div>
</content>
</entry>
<entry>
<title>Revert gsymutil changes due to concurrency problems (#142829)</title>
<updated>2025-06-04T18:34:12+00:00</updated>
<author>
<name>peremyach</name>
<email>akhabutdinov@meta.com</email>
</author>
<published>2025-06-04T18:34:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=246fa9a9f71166b4c7a5ec6544535452a68a07a5'/>
<id>246fa9a9f71166b4c7a5ec6544535452a68a07a5</id>
<content type='text'>
We saw occasional segfaults while processing some binaries. The reason
probably is that we may clear the DIE while we are reading it's data
from another thread which happens due to cross-unit references.

---------

Co-authored-by: Arslan Khabutdinov &lt;akhabutdinov@fb.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We saw occasional segfaults while processing some binaries. The reason
probably is that we may clear the DIE while we are reading it's data
from another thread which happens due to cross-unit references.

---------

Co-authored-by: Arslan Khabutdinov &lt;akhabutdinov@fb.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>fix llvm-gsymutil verification (#141751)</title>
<updated>2025-05-29T21:02:22+00:00</updated>
<author>
<name>peremyach</name>
<email>akhabutdinov@meta.com</email>
</author>
<published>2025-05-29T21:02:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=beb6972cbb549eb4f00345f6e04427e266b2dd0c'/>
<id>beb6972cbb549eb4f00345f6e04427e266b2dd0c</id>
<content type='text'>
Verification crashed here
https://github.com/llvm/llvm-project/blob/main/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp#L519
The reason being that during verification to extract inline_info we
recreate compile unit dies. Assert fails because we previously cleaned
up just the DIEs but some other fields remained initialized.

Co-authored-by: Arslan Khabutdinov &lt;akhabutdinov@fb.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Verification crashed here
https://github.com/llvm/llvm-project/blob/main/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp#L519
The reason being that during verification to extract inline_info we
recreate compile unit dies. Assert fails because we previously cleaned
up just the DIEs but some other fields remained initialized.

Co-authored-by: Arslan Khabutdinov &lt;akhabutdinov@fb.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Reduce llvm-gsymutil memory usage (#140740)</title>
<updated>2025-05-21T16:49:12+00:00</updated>
<author>
<name>peremyach</name>
<email>akhabutdinov@meta.com</email>
</author>
<published>2025-05-21T16:49:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d997b4f5318f5ce8bcebe818c636f107e5ec0fb6'/>
<id>d997b4f5318f5ce8bcebe818c636f107e5ec0fb6</id>
<content type='text'>
Same as https://github.com/llvm/llvm-project/pull/139907/ except there
is now a special dovoidwork helper function.
Previous approach with assert(f();return success;) failed tests for
release builds, so I created a separate helper. Open to suggestions how
to solve this more elegantly.

Co-authored-by: Arslan Khabutdinov &lt;akhabutdinov@fb.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Same as https://github.com/llvm/llvm-project/pull/139907/ except there
is now a special dovoidwork helper function.
Previous approach with assert(f();return success;) failed tests for
release builds, so I created a separate helper. Open to suggestions how
to solve this more elegantly.

Co-authored-by: Arslan Khabutdinov &lt;akhabutdinov@fb.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Reduce llvm-gsymutil memory usage" (#140696)</title>
<updated>2025-05-20T11:31:39+00:00</updated>
<author>
<name>peremyach</name>
<email>akhabutdinov@meta.com</email>
</author>
<published>2025-05-20T11:31:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5ed0b3a2d7596e3d04fe51998c14e7927e6d7e2e'/>
<id>5ed0b3a2d7596e3d04fe51998c14e7927e6d7e2e</id>
<content type='text'>
Reverts llvm/llvm-project#139907 as per discussion in
https://github.com/llvm/llvm-project/issues/140545 due to tests becoming
flaky</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#139907 as per discussion in
https://github.com/llvm/llvm-project/issues/140545 due to tests becoming
flaky</pre>
</div>
</content>
</entry>
<entry>
<title>Reduce llvm-gsymutil memory usage (#139907)</title>
<updated>2025-05-16T16:44:17+00:00</updated>
<author>
<name>peremyach</name>
<email>akhabutdinov@meta.com</email>
</author>
<published>2025-05-16T16:44:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ebb15353d2a1edefb40faa0ad56e661b7aee3134'/>
<id>ebb15353d2a1edefb40faa0ad56e661b7aee3134</id>
<content type='text'>
For large binaries gsymutil ends up using too much memory. This diff
adds DIE tree cleanup per compile unit to reduce memory usage.

P. S. Not sure about formatting. Maybe it hasn't been run in a while, or
I have misconfigured something.

`$ git clang-format HEAD~1
clang-format did not modify any files
$ clang-format --version
clang-format version 21.0.0git
(git@github.com:peremyach/llvm-project.git
8d945c8357e1bd9872a34f92620d4916bfd27482)
`

Co-authored-by: Arslan Khabutdinov &lt;akhabutdinov@fb.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For large binaries gsymutil ends up using too much memory. This diff
adds DIE tree cleanup per compile unit to reduce memory usage.

P. S. Not sure about formatting. Maybe it hasn't been run in a while, or
I have misconfigured something.

`$ git clang-format HEAD~1
clang-format did not modify any files
$ clang-format --version
clang-format version 21.0.0git
(git@github.com:peremyach/llvm-project.git
8d945c8357e1bd9872a34f92620d4916bfd27482)
`

Co-authored-by: Arslan Khabutdinov &lt;akhabutdinov@fb.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Reduce llvm-gsymutil memory usage" (#97603)</title>
<updated>2024-07-03T16:22:26+00:00</updated>
<author>
<name>Kamau Bridgeman</name>
<email>kamau.bridgeman.ibm@gmail.com</email>
</author>
<published>2024-07-03T16:22:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3386d24ff4e5dae07e33326c12c8d7dfd29de06a'/>
<id>3386d24ff4e5dae07e33326c12c8d7dfd29de06a</id>
<content type='text'>
Reverts llvm/llvm-project#91023
Build break found in clang-ppc64le-linux-multistage build no. 583.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#91023
Build break found in clang-ppc64le-linux-multistage build no. 583.</pre>
</div>
</content>
</entry>
<entry>
<title>Reduce llvm-gsymutil memory usage (#91023)</title>
<updated>2024-07-02T17:14:26+00:00</updated>
<author>
<name>Kevin Frei</name>
<email>kevinfrei@users.noreply.github.com</email>
</author>
<published>2024-07-02T17:14:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=60cd3eb880fe48d192a58c64a1e38e875fc65377'/>
<id>60cd3eb880fe48d192a58c64a1e38e875fc65377</id>
<content type='text'>
llvm-gsymutil eats a lot of RAM. On some large binaries, it causes OOM's on smaller hardware, consuming well over 64GB of RAM. This change frees line tables once we're done with them, and frees DWARFUnits's DIE's when we finish processing each DU, though they may get reconstituted if there are references from other DU's during processing. Once the conversion is complete, all DIE's are freed. The reduction in peak memory usage from these changes showed between 7-12% in my tests.

The double-checked locking around the creation &amp; freeing of the data structures was tested on a 166 core system. I validated that it trivially malfunctioned without the locks (and with stupid reordering of the locks) and worked reliably with them.

---------

Co-authored-by: Kevin Frei &lt;freik@meta.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
llvm-gsymutil eats a lot of RAM. On some large binaries, it causes OOM's on smaller hardware, consuming well over 64GB of RAM. This change frees line tables once we're done with them, and frees DWARFUnits's DIE's when we finish processing each DU, though they may get reconstituted if there are references from other DU's during processing. Once the conversion is complete, all DIE's are freed. The reduction in peak memory usage from these changes showed between 7-12% in my tests.

The double-checked locking around the creation &amp; freeing of the data structures was tested on a 166 core system. I validated that it trivially malfunctioned without the locks (and with stupid reordering of the locks) and worked reliably with them.

---------

Co-authored-by: Kevin Frei &lt;freik@meta.com&gt;</pre>
</div>
</content>
</entry>
</feed>
