| 140 | } |
| 141 | |
| 142 | static void |
| 143 | gatherInformationFromDIE(Dwarf_Die* cudie, Dwarf_Die* die, int* line, int* col, const char** sname) |
| 144 | { |
| 145 | Dwarf_Files* files; |
| 146 | if (dwarf_getsrcfiles(cudie, &files, nullptr) != 0) { |
| 147 | return; |
| 148 | } |
| 149 | Dwarf_Attribute attr; |
| 150 | Dwarf_Word val; |
| 151 | if (dwarf_formudata(dwarf_attr(die, DW_AT_call_file, &attr), &val) != 0) { |
| 152 | return; |
| 153 | } |
| 154 | *sname = dwarf_filesrc(files, val, nullptr, nullptr); |
| 155 | if (dwarf_formudata(dwarf_attr(die, DW_AT_call_line, &attr), &val) != 0) { |
| 156 | return; |
| 157 | } |
| 158 | *line = val; |
| 159 | if (dwarf_formudata(dwarf_attr(die, DW_AT_call_column, &attr), &val) != 0) { |
| 160 | return; |
| 161 | } |
| 162 | *col = val; |
| 163 | } |
| 164 | |
| 165 | // AbstractUnwinder |
| 166 | |