Handle the unloading of a module. */
| 249 | |
| 250 | /* Handle the unloading of a module. */ |
| 251 | void |
| 252 | unwind_module_unloaded(struct linker_file *lf) |
| 253 | { |
| 254 | struct module_info *info; |
| 255 | |
| 256 | /* |
| 257 | * A module that contains only data may have no unwind info and there |
| 258 | * won't be a list entry for it. |
| 259 | */ |
| 260 | if (lf->exidx_size == 0) |
| 261 | return; |
| 262 | |
| 263 | /* |
| 264 | * When a module is unloaded, we clear the info out of its entry in the |
| 265 | * module list, making that entry available for later reuse. |
| 266 | */ |
| 267 | if ((info = find_module_info(UADDR(lf->address))) == NULL) { |
| 268 | printf("arm unwind: module '%s' not on list at unload time\n", |
| 269 | lf->filename); |
| 270 | return; |
| 271 | } |
| 272 | clear_module_info(info); |
| 273 | } |
| 274 | |
| 275 | /* |
| 276 | * Initialization must run fairly early, as soon as malloc(9) is available, and |
no test coverage detected