DWARF_FINISH(3)

NAME
dwarf_finish - free resources associated with a debug descriptor

LIBRARY
libdwarf

SYNOPSIS
#include <libdwarf.h>
int
dwarf_finish(Dwarf_Debug dbg, Dwarf_Error *err);

DESCRIPTION
The dwarf_finish() function is used to release the resources associated with a debug descriptor allocated by a prior call to dwarf_init(3).

Argument dbg denotes a valid Dwarf_Debug instance. Argument err will be used to record error information in case of an error.

After a call to dwarf_finish() argument dbg will be invalid and should not be used further.

For Dwarf_Debug descriptors opened using dwarf_init(3), the application would need to explicitly release the Elf instance associated with the descriptor by first retrieving the instance using dwarf_get_elf(3) and closing it using elf_end(3).

RETURN VALUES
Function dwarf_finish() returns DW_DLV_OK if successful. In case of an error, the function returns DW_DLV_ERROR and records additional information in argument err.

EXAMPLES
To deallocate a Dwarf_Debug instance allocated using dwarf_elf_init(3) use:

    	Dwarf_Debug dbg;
    	Dwarf_Error de;
    	if (dwarf_finish(dbg, &de) != DW_DLV_OK)
    		errx(1, "dwarf_finish: %s", dwarf_errmsg(de));

To deallocate a Dwarf_Debug instance allocated using dwarf_init(3) use:

    	Dwarf_Debug dbg;
    	Dward_Error de;
    	Elf *e;
    	if (dwarf_get_elf(dbg, &e, &de) != DW_DLV_OK)
    		errx(1, "dwarf_get_elf: %s", dwarf_errmsg(&de));
    	if (dwarf_finish(dbg, &de) != DW_DLV_OK)
    		errx(1, "dwarf_finish: %s", dwarf_errmsg(de));
    	(void) elf_end(e);

SEE ALSO
elf_end(3), dwarf_elf_init(3), dwarf_get_elf(3), dwarf_init(3)