| 834 | *LEN. */ |
| 835 | |
| 836 | static char * |
| 837 | elf_readlink (struct backtrace_state *state, const char *filename, |
| 838 | backtrace_error_callback error_callback, void *data, |
| 839 | size_t *plen) |
| 840 | { |
| 841 | size_t len; |
| 842 | char *buf; |
| 843 | |
| 844 | len = 128; |
| 845 | while (1) |
| 846 | { |
| 847 | ssize_t rl; |
| 848 | |
| 849 | buf = (char*)backtrace_alloc (state, len, error_callback, data); |
| 850 | if (buf == NULL) |
| 851 | return NULL; |
| 852 | rl = readlink (filename, buf, len); |
| 853 | if (rl < 0) |
| 854 | { |
| 855 | backtrace_free (state, buf, len, error_callback, data); |
| 856 | return NULL; |
| 857 | } |
| 858 | if ((size_t) rl < len - 1) |
| 859 | { |
| 860 | buf[rl] = '\0'; |
| 861 | *plen = len; |
| 862 | return buf; |
| 863 | } |
| 864 | backtrace_free (state, buf, len, error_callback, data); |
| 865 | len *= 2; |
| 866 | } |
| 867 | } |
| 868 | |
| 869 | #define SYSTEM_BUILD_ID_DIR "/usr/lib/debug/.build-id/" |
| 870 |
no test coverage detected