<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/121135>121135</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            ARM32: Missing gprof support
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:ARM
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          wzssyqa
      </td>
    </tr>
</table>

<pre>
    ```
int fib(int n) {return n <=1 ? 1 : fib(n-1) + fib(n-2); }
int main() {fib(10); return 0;}
```

How to test native:
```
bin/clang -pg test.c && ./a.out && gprof -b a.out gmon.out
```

How to test cross with qemu-user
```
apt install gcc-arm-linux-gnueabi gcc-arm-linux-gnueabihf
bin/clang --target=arm-linux-gnueabi -pg test.c -static && ./a.out && gprof -b a.out gmon.out
bin/clang --target=arm-linux-gnueabihf -pg test.c -static && ./a.out && gprof -b a.out gmon.out
```

Known problem:
```
$ bin/clang --target=arm-linux-gnueabi -pg test.c -static && ./a.out && gprof -b a.out gmon.out
Flat profile:

Each sample counts as 0.01 seconds.
 no time accumulated

  %   cumulative   self              self     total 
 time   seconds   seconds    calls  Ts/call  Ts/call  name 


                        Call graph


granularity: each sample hit covers 2 byte(s) no time propagated

index % time    self  children    called     name
 1             main [130]
[130]    0.0    0.00 0.00       0+1       main [130]
                                   1 main [130]
-----------------------------------------------


Index by function name
```

```
$ bin/clang --target=arm-linux-gnueabihf -pg test.c -static && ./a.out && gprof -b a.out gmon.out
/usr/bin/arm-linux-gnueabihf-ld: /tmp/n-9e8be5.o: in function `fib':
n.c:(.text+0xc): undefined reference to `mcount'
/usr/bin/arm-linux-gnueabihf-ld: /tmp/n-9e8be5.o: in function `main':
n.c:(.text+0x4c): undefined reference to `mcount'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy8Vl-PpDYM_zSZFwsUwsAMDzzM3Ba1qvbl1C8QgoH0QsLlz-xuP30VYPbP7F3bO60aIbBMbP9-xnbgzslBI9akOJPibseDH42tH_5y7ukr37Wme6pJSbeLnqT20MuWsGOUNGEVkMPZog9WgwaSfyL5XQYkbyDeT9tmnWTLVnZ-VjDCKpKfgRzuNr8Tl5qw4-Zz3ZfRbdsWgpL8vFq8RkXo6VfzAN6AR-dBcy8vSPLTzbY2-m-E4nqAZB6WzakAwkrCSkgJa3hqgr8qhtmaHpIWVu0wGR2Ff44trHEOHqQf4StOIQkO7Y0Fnz1I7TxXCgYhEm6nREkdHpNBB-St_LZ27G8pJJ7bAT3J7967eMUvcZ57-TM8_2u0sf-YeDd5_V2bBw2zNa3C6f3nJGwP_28-GsV9xNNLdS0vevqFixEcn2aFIEzQ3gF3QFOagUNhdOdSQk-gDXg5IXAhwhQU99it9gCEFQCwqeUFAcCh6uHNetZ447mCaLj4g2uUNxIIrpQD-MPF9MRKey1qPiGs0ZerWq9PS0VaPo_P7wbLdVDcSv8UuxlfcR2lB2EuaB0waJ88EnZ0sXmvTGdrZj68EJW6w8eF7AZ84yRGqTqL-gobu4VnBBlZZm_SEIcEkOKc5ZQUyxy4yvEtTen2oOttXZSwc_Y9B_DvK3tvlfzYek7ob0sS2ifogxZeGn3leVP7P1voH9aKrAnOEtasgb8RJ1FdLAnCGj_NhDU6qfDYYpGaqJb6hSEp6TLND2vP6FREgR1Tj4-esDN9FMuUP0HQHfZSYwcWe7SoBcbJSko6La0VfXw4tvXc-T64_Y-hW77R0izWGhsFJfUXtCDMNHHdQc9lrPHljMDHpYs6jMclOwaHkFyiU4cIUl-M4BFmBPCqJnZdnXdVXvEd1tkhL7IjyyndjfURj6WoCn4osi6vEGlZln2ZiUN2wL5ss52sGWX7jLGS5rSgNK2QcjzSPmfFnlVtTvYUJy5VqtRlSo0ddtK5gHXGsiwvdoq3qNzyt8BYy8UX1DHTp8_3hLH4A2HraJi0YXBkT5V03r248tIrrE-f73MW83IvnZN62KrQhXk21u-CVfXo_eyW79AQ1gzSj6FNhZkIa6Kz7ZHM1vyJwhPWLCDjgNtwXmr2dwAAAP__IOGcEQ">