drgn/libdrgn/elfutils/libdwfl/dwfl_end.c
Omar Sandoval d3afc63ac9 Update to elfutils 0.178
Rebase on 0.178. The only additional change needed is to pass
--disable-debuginfod to configure.

Based on:

2c7c4037 elfutils.spec.in: Sync with fedora spec, remove rhel/fedora specifics.

With the following patches:

configure: Add --disable-programs
configure: Add --disable-shared
configure: Fix -D_FORTIFY_SOURCE=2 check when CFLAGS contains -Wno-error
libcpu: compile i386_lex.c with -Wno-implicit-fallthrough
libdwfl: add interface for attaching to/detaching from threads
libdwfl: cache Dwfl_Module and Dwarf_Frame for Dwfl_Frame
libdwfl: add interface for evaluating DWARF expressions in a frame
2019-12-03 12:39:11 -08:00

69 lines
1.8 KiB
C

/* Finish a session using libdwfl.
Copyright (C) 2005, 2008, 2012-2013, 2015 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
it under the terms of either
* the GNU Lesser General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at
your option) any later version
or
* the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at
your option) any later version
or both in parallel, as here.
elfutils is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received copies of the GNU General Public License and
the GNU Lesser General Public License along with this program. If
not, see <http://www.gnu.org/licenses/>. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "libdwflP.h"
#include <unistd.h>
void
dwfl_end (Dwfl *dwfl)
{
if (dwfl == NULL)
return;
__libdwfl_debuginfod_end (dwfl->debuginfod);
if (dwfl->process)
__libdwfl_process_free (dwfl->process);
free (dwfl->lookup_addr);
free (dwfl->lookup_module);
free (dwfl->lookup_segndx);
Dwfl_Module *next = dwfl->modulelist;
while (next != NULL)
{
Dwfl_Module *dead = next;
next = dead->next;
__libdwfl_module_free (dead);
}
if (dwfl->user_core != NULL)
{
free (dwfl->user_core->executable_for_core);
elf_end (dwfl->user_core->core);
if (dwfl->user_core->fd != -1)
close (dwfl->user_core->fd);
free (dwfl->user_core);
}
free (dwfl);
}