<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">