<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - Unwind information is not emitted for ThumbV7PILongThunks"
href="https://bugs.llvm.org/show_bug.cgi?id=47171">47171</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>Unwind information is not emitted for ThumbV7PILongThunks
</td>
</tr>
<tr>
<th>Product</th>
<td>new-bugs
</td>
</tr>
<tr>
<th>Version</th>
<td>trunk
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>Linux
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>enhancement
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>new bugs
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>wittman@chromium.org
</td>
</tr>
<tr>
<th>CC</th>
<td>htmldeveloper@gmail.com, llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>The .debug_frame section of a .so for Android arm32 contains no FDEs covering
ThumbV7PILongThunks. This is particularly problematic for Chromium where the
.text section of libchrome.so is 80MB and contains 42k thunks, and a
non-trivial amount of execution time is spent in the thunks.
This was observed in Chromium's clang built from
1bd7046e4ce0102adef6096a12a289d7f94b8c73.
It's not clear that a reduced repro is possible since thunks are only needed on
arm32 when the text section is >32MB. To reproduce with Chromium:
1. Follow
<a href="https://chromium.googlesource.com/chromium/src/+/master/docs/android_build_instructions.md">https://chromium.googlesource.com/chromium/src/+/master/docs/android_build_instructions.md</a>
has instruction to set up a Chromium build for Android, but use the following
file contents for the 'gn args out/Default' step:
target_os = "android"
target_cpu = "arm"
is_component_build = false
2. After building chrome_public_apk the relevant .so is in
out/Default/lib.unstripped/libchrome.so.
3. Find the address of an example thunk:
third_party/android_ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/arm-linux-androideabi/bin/objdump
-j .text -dC out/Default/lib.unstripped/libchrome.so | perl -lne 'print if
/^.{8} <__ARMV7PILongThunk___cxa_finalize>/../^$/'
4. Observe that no FDEs cover the address of the example thunk in the output of
llvm-dwarfdump --debug-frame out/Debug/lib.unstripped/libchrome.so</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>