<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60492>60492</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
`unw_get_proc_name` fails on Alpine linux if you don't pass `-rdynamic`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
lolgab
</td>
</tr>
</table>
<pre>
## Motivation
The [Scala Native](https://github.com/scala-native/scala-native) compiler based on LLVM. It relies on libunwind's `unw_get_proc_name` for stack traces. musl libc is prone to static linking which, but linking statically breaks `unw_get_proc_name`.
## Reprodution
Given this c program:
```c
#include <stdio.h>
#include <libunwind.h>
void unwind_by_libunwind()
{
unw_cursor_t cursor;
unw_context_t context;
unw_getcontext(&context);
unw_init_local(&cursor, &context);
while (unw_step(&cursor) > 0)
{
unw_word_t offset;
char name[64] = {0};
int result = unw_get_proc_name(&cursor, name, sizeof(name), &offset);
printf("UNW_EUNSPEC = %d\n", UNW_EUNSPEC);
printf("UNW_ENOINFO = %d\n", UNW_ENOINFO);
printf("UNW_ENOMEM = %d\n", UNW_ENOMEM);
printf("result = %d, name = '%s'\n", result, name);
}
}
int main() {
unwind_by_libunwind();
return 0;
}
```
I installed the dependencies with:
```
sudo apk add clang llvm-libunwind-dev
```
Result without passing `-rdynamic`:
```
clang -lunwind -o main main.c && ./main
UNW_EUNSPEC = -6540
UNW_ENOINFO = -6549
UNW_ENOMEM = -6541
result = -6540, name = ''
```
Result when passing `-rdynamic`:
```
clang -lunwind -rdynamic -o main main.c && ./main
UNW_EUNSPEC = -6540
UNW_ENOINFO = -6549
UNW_ENOMEM = -6541
result = 0, name = 'main'
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEVk2P4jgQ_TXmUgJlHBLgkEM3H6uWhp7VzM7uETl2kXjb2JHtwPT--pXjAIGebo20h5WQcfyqXrmeXz6Yc7LSiAXJHkm2GrHW18YWyqiKlaPSiNeC0JTQFLbGyyPz0miSrEjy8EeNQLLHb5wpBs_MyyOSbEXovPa-cSR9IHRD6KaSvm7LCTcHQjcuBI91DL6_XAA3h0YqtFAyhwKMhs-f_9xO4MmDRSXRhSUly1afpBaEzhyQPGn1aVeh3zXW8J1mByR5AntjwXnGX8BbxtFN4NA6FZI5SAeNNRrBmxDjJQcl9YvUFZxqyWtCl1C2_rIYY5hSr1BaZC_vVp1EZfoxyvYVG2tEe9Utjr_JI2rwtXTAw24qyw5BsxiSJ_HHL1RSc9UKBJIunRfSTGqSrn-GXuQZRnTj0UgBEduVr7uBjnNCF33k7DFOIETueGudsTsPcULSW9Rojz98gOPsgg-jKvRnOBTKLxeLOzqppd8pw5nqA2NNuoSfZ51zT7VUCITOA4nz2NymL4Cka0guLQIMmoyVT8aKnQez3zv0g10B8JpZ6E43e8ynJFsBSVeBICGz1U2k1MGkrlW-C3lrj7ue4toSnPwHzZ7QeVxY9P32e7kRCaCfNVZqv-8Y6ffnv3br78_ffl8v495oJki21ITSQDWA78nesDx_eXrefHmXJcK_wLJdbz8g2a63NxxDgoGAXXKvU78wIzRz4e_KGROueg54wwH1nl4NDRMO6sCkjraHW8e_c29cG7boW6shubrwwn6-aYfFnkBq55lSKMDXCAIb1AI1Dw-zk_T123s-XrpWGGDNCzAhgCumK1DqeBhfdjYWePyg8NeoZChhWg9NeM7rKjy4xla8anaQPGS8Uz0WHKtYCsamU6wbJhyCPwnNYULoplOyy7k34jjPpskAGrgrQIsb6GyZgHyKyMALkeqNGWa_0H-N-r82f07532V4I0G08b0MI1GkYpEu2AiLT_ksS2d0MaOjukAxRZrOp2zPKZslU5byfZmW-TxjfMpEPpIFTWia0ITST5RmdFJixhFpsi_TeVmyPZkmeGBSTYIXJ8ZWI-lci0WeTBd0pFiJyp2_JGzRGbZsK0emiZLOu2ual15h8e7Lm0nVvesfVCM1hhdx-wPkHl5NC8KEnqOl74901FpVfPD9Eer3f-PGmr-Re0I3XQ-O0E3Xxr8BAAD__5DRo1o">