| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a new alt_fd field to the Dwarf struct. This tracks whether we tried
to open the alt file ourselves. This is used in dwarf_getalt to see if
we should try to find and open the alt file ourselves (if the user hasn't
called dwarf_setalt yet). dwarf_formref_die and dwarf_formstring now call
dwarf_getalt instead of accessing the alt_dwarf Dwarf field directly.
For applications using libdwfl nothing changes (dwfl will find, set and
clean up the alt file). For programs that set the alt file themselves
already through other means, nothing changes. But for applications that
don't create the Dwarf through libdwfl and don't set the alt file already
libdw will now try to find and set it on first access. If found the
application will now not get errors for missing alt files.
Add a simple testcase based on the existing allfcts test which already
tries to set the alt file, but is too simplistic to find it in some
subdir (relative to the main debug file).
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
|
|
|
|
|
| |
This change also adds more error checking and reporting.
Signed-off-by: Florian Weimer <fweimer@redhat.com>
|
|
|
|
|
|
|
|
| |
The return value of dwarf_getfuncs is a ptrdiff_t that is zero on success,
or non-zero (an offset to continue the search) when the callback returned
DWARF_CB_ABORT or on error. When an error occurs dwarf_errno is set.
Signed-off-by: Mark Wielaard <mjw@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
dwarf_getfuncs used to return only the DW_TAG_subprogram DIEs that were
direct children of the given CU. This is normally how GCC outputs the
subprogram DIEs. But not always. For nested functions the subprogram DIE
is placed under the code construct DIE where it is nested. Other compilers
might output the defining subprogram DIE of a C++ class function under
the DW_TAG_namespace DIE where it was defined. Both such constructs seem
allowed by the DWARF specification. So just searching the CU DIE children
was wrong.
To find all (defining) subprogram DIEs in a CU dwarf_getfuncs should
use __libdw_visit_scopes to walk the tree for all DIEs that can contain
subprograms as children. The only tricky part is making sure the offset
returned and used when the callback returns DWARF_CB_ABORT is correct
and the search continues at the right spot in the CU DIE tree. This
operation now needs to rewalk the whole tree.
Two new testcases were added that fail without this patch. And the
allfcts test was tweaked so that it always returns DWARF_CB_ABORT
from its callback to make sure the offset handling is correct.
Signed-off-by: Mark Wielaard <mjw@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Change name from "Red Hat elfutils" to "elfutils".
* Update license of standalone tools and test from GPLv2 to GPLv3+.
* Change license of libraries from GPLv2+exception to GPLv2/LGPLv3+.
* Add Developer Certificate of Origin based contributor policy.
top-level:
- COPYING: Upgraded from GPLv2 to GPLv3.
- CONTRIBUTING, COPYING-GPLv2, COPYING-LGPLv3: New files.
- NEWS: Added note about new contribution and license policy.
- Makefile.am: Updated to GPLv3, added new files to EXTRA_DIST.
- configure.ac: Update to GPLv3, changed AC_INIT name to 'elfutils'.
backends, lib, libasm, libcpu, libdw, libdwfl, libebl, libelf:
- All files updated to GPLv2/LGPLv3+. Except some very small files
(<5 lines) which didn't have any headers at all before, the linker
.maps files and the libcpu/defs files which only contain data and
libelf/elf.h which comes from glibc and is under LGPLv2+.
config:
- elfutils.spec.in: Add new License: headers and new %doc files.
- Update all license headers to GPLv2/LGPLv3+ for files used by libs.
src, tests:
- All files updated to GPLv3+. Except for the test bz2 data files, the
linker maps and script files and some very small files (<5 lines)
that don't have any headers.
Signed-off-by: Richard Fontana <rfontana@redhat.com>
Signed-off-by: Mark Wielaard <mjw@redhat.com>
|
| |
|
|
|
|
|
|
| |
4f8fc821345feef58624f0aa5b470d4827577d8c)
to branch 'com.redhat.elfutils' (head 76e26cb54695fd3b21ee8fb5be3036bd68200633)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* configure.ac: Define HAVE_LIBASM and STANDALONE conditionals.
In config.h, define ELFUTILS_HEADER macro.
tests/
2005-11-16 Roland McGrath <roland@redhat.com>
* configure.ac: New file, for standalone build/dist of test suite.
* Makefile.am [!STANDALONE] (INCLUDES): Don't define it.
(asm_TESTS): New variable, broken out of ...
(TESTS): ... here. Also remove msg_tst.
[!STANDALONE] (TESTS, noinst_PROGRAMS): Add in $(asm_TESTS), msg_tst.
(installed_TESTS_ENVIRONMENT): New variable.
[STANDALONE] (TESTS_ENVIRONMENT): Use that.
[!STANDALONE] (installcheck-local): Likewise.
[STANDALONE] (libdw, libelf, libasm, libebl): Define using -lfoo.
* addrscopes.c: Include <config.h>.
Use ELFUTILS_HEADER macro in #include of installed elfutils/ headers.
* allfcts.c: Likewise.
* asm-tst1.c: Likewise.
* asm-tst2.c: Likewise.
* asm-tst3.c: Likewise.
* asm-tst4.c: Likewise.
* asm-tst5.c: Likewise.
* asm-tst6.c: Likewise.
* asm-tst7.c: Likewise.
* asm-tst8.c: Likewise.
* asm-tst9.c: Likewise.
* dwflmodtest.c: Likewise.
* find-prologues.c: Likewise.
* funcscopes.c: Likewise.
* get-aranges.c: Likewise.
* get-files.c: Likewise.
* get-lines.c: Likewise.
* get-pubnames.c: Likewise.
* line2addr.c: Likewise.
* newscn.c: Likewise.
* show-abbrev.c: Likewise.
* show-die-info.c: Likewise.
* update3.c: Likewise.
* update4.c: Likewise.
* dwflmodtest.c (print_instance): Don't use INTUSE.
(options): Don't use N_ macro.
|
| |
|
|
|