summaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
...
| * aarch64: Add default cfi rule to restore SP from CFA address.Mark Wielaard2018-04-132-1/+5
| | | | | | | | | | | | | | | | | | The CFA is set by default to the stack pointer of the previous frame. So that is also how we can always restore the SP. This default aarch64 CFI rule is necessary on Fedora 28 with GCC8 to make the run-deleted.sh and run-backtrace-dwarf.sh testcases work. Signed-off-by: Mark Wielaard <[email protected]>
| * libdw: Restructure address range reading for .debug_loc and .debug_ranges.Mark Wielaard2018-04-134-1/+86
| | | | | | | | | | | | | | | | This caches the CU base address, makes error checking slight more relaxed and restructures the code so it will be easier to add different forms of ranges. Adds a new test for the new CU base address code. Signed-off-by: Mark Wielaard <[email protected]>
| * libdw: Add new DWARF5 Dwarf expression operations.Mark Wielaard2018-03-112-2/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | DW_OP_implicit_pointer, DW_OP_entry_value, DW_OP_const_type, DW_OP_regval_type, DW_OP_deref_type, DW_OP_xderef_type, DW_OP_convert and OP_reinterpret are implemented like their pre-DWARF5 GNU variants. DW_OP_xderef_type is implemented as a (non-CU relative) variant of DW_OP_deref_type. DW_OP_addrx and DW_OP_constx are recognized but not interpreted yet. Signed-off-by: Mark Wielaard <[email protected]>
| * tests: Accept any core if no core with the "correct" pid can be found.Mark Wielaard2018-02-162-0/+12
| | | | | | | | | | | | | | | | | | In some containers our view of pids is confused. We see the container pid namespace, but the core is generated using the host pid namespace. Since tests are run in a new fresh directory any core here is most like is ours. Signed-off-by: Mark Wielaard <[email protected]>
| * Include sys/ptrace.h as early as possible.Mark Wielaard2018-02-153-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On some systems, at least on Fedora 27 ppc64le with glibc 2.26-24 and kernel 4.14.18-300, including sys/ptrace.h late (after signal.h or sys/wait.h for example) will cause issues and produce errors like: In file included from /usr/include/asm/sigcontext.h:12:0, from /usr/include/bits/sigcontext.h:30, from /usr/include/signal.h:287, from /usr/include/sys/wait.h:36, from linux-pid-attach.c:38: /usr/include/sys/ptrace.h:73:3: error: expected identifier before numeric constant PTRACE_GETREGS = 12, ^ Swapping the include order fixes these issues. Signed-off-by: Mark Wielaard <[email protected]>
| * libdw: Add dwarf_die_addr_die function.Mark Wielaard2018-02-134-3/+225
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently storing a lot of Dwarf_Dies might be inefficient since it costs a lot of memory since the sizeof (Dwarf_Die) == 32 bytes on 64bit arches. You can try storing just the Dwarf_Off from dwarf_dieoffset. Which is just 8 bytes. But then you have to keep track of whether to call dwarf_dieoffset, if the Dwarf_Die came from the main .debug_info, or call dwarf_dieoffset_types, if it came from .debug_types. And you'll have to keep track of whether it came from the main Dwarf or the alt Dwarf (dwz multi file). With DWARF5 or GNU DebugFission split-dwarf you will also need to know which split Dwarf file the original DIE came from. A Dwarf_Die consists of an addr pointer where the actual DIE data comes from, a CU pointer that provides context (and has a pointer to the Dwarf file the Die is associated with) and a (cached) Dwarf_Abbrev pointer that is initialized when the Dwarf_Die is first read and describes how to interpret the DIE data. libdw already keeps track of the data pointers (sections) of a Dwarf file and given an offset it can already reconstruct the other Dwarf_Die fields. So this patch introduces dwarf_die_addr_die. Given a Dwarf_Die addr dwarf_die_addr_die returns a (reconstructed) Dwarf_Die, or NULL if the given addr didn't come from a valid Dwarf_Die. In particular it will make sure that the correct Dwarf_CU pointer is set for the Dwarf_Die, the Dwarf_Abbrev pointer will not be set up yet (it will only be once the Dwarf_Die is used to read attributes, children or siblings). This functions can be used to keep a reference to a Dwarf_Die which you want to refer to later. The addr, and the result of this function, is only valid while the associated Dwarf is valid. Since libdw already had to lookup the Dwarf_CU given an offset, this function is as efficient as dwarf_dieoffset (or dwarf_dieoffset_types) without having to know the original origin of the Dwarf_Die. It will search both the .debug_info and .debug_types data sections from both the main Dwarf or the alt Dwarf file. Once split dwarf support is added it will also look in any split dwarf .dwo (or the .dwp) file. The only limitation, compared to using a Dwarf_Off and dwarf_dieoffset, is that it only works during runtime while the main Dwarf object is valid (till dwarf_end has been called on it). Signed-off-by: Mark Wielaard <[email protected]>
| * Use fallthrough attribute.Joshua Watt2018-02-103-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use __attribute__ ((fallthrough)) to indicate switch case fall through instead of a comment. This ensures that the fallthrough warning is not triggered even if the file is pre-processed (hence stripping the comments) before it is compiled. The actual fallback implementation is hidden behind a FALLBACK macro in case the compiler doesn't support it. Finally, the -Wimplict-fallthrough warning was upgraded to only allow the attribute to satisfy it; a comment alone is no longer sufficient. Signed-off-by: Joshua Watt <[email protected]>
| * libdw: Resolve alt file on first use.Mark Wielaard2018-01-253-1/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * tests: Check symtabshdr instead of symtabndx in elfstrmerge.c.Mark Wielaard2018-01-252-5/+10
| | | | | | | | | | | | | | | | | | Some gcc omptimization levels (-Og in particular) didn't see that when symtabndx != 0, then symtabshdr was certain to be initialized. Change the symtabndx == 0 check to symtabshdr == NULL and initialize symtabshdr to work around that. Signed-off-by: Mark Wielaard <[email protected]>
| * libdw: dwarf_formsdata should return a signed valuePetr Machata2018-01-145-2/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The function dwarf_formsdata is used for decoding signed values, but except for the variable-length DW_FORM_sdata, it uses unsigned primitives to decode the value. This is not a problem for 64-bit values, but the smaller values come decoded wrong. Fix by changing to signed primitives for decoding the fixed-length forms. Add a test case that uses dwarf_aggregate_size to determine an array size whose lower bound is -1, encoded using DW_FORM_data1, and upper bound 255 with DW_FORM_data2. When the -1 is decoded wrongly, it comes back as 255, and the array size is 1. The correct array size should be 257. Signed-off-by: Petr Machata <[email protected]>
| * tests: Try to use coredumpctl to extract core files.Mark Wielaard2017-12-293-2/+40
| | | | | | | | | | | | | | | | | | | | If systemd-coredump is installed we have to use coredumpctl to extract the core file to test. Unfortunately systemd-coredump/coredumpctl seem to be somewhat fragile if multiple core dumps are generated/extracted at the same time. So use a lock file to only run one core dump test at a time (under make -j). Signed-off-by: Mark Wielaard <[email protected]>
| * libdw: dwarf_aggregate_size() works with multi-dimensional arraysDima Kogan2017-12-124-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | If we have a multidimensional array of dimensions (a,b,c) the number of elements should be a*b*c, but prior to this patch dwarf_aggregate_size() would report a+b+c instead. This patch fixes the bug and adds a test that demonstrates the bug (the test fails without the functional part of this patch). Fixes: https://sourceware.org/bugzilla/show_bug.cgi?id=22546 Signed-off-by: Dima Kogan <[email protected]>
| * readelf: Handle DW_OP_call2 and DW_OP_call4 correctly.Mark Wielaard2017-12-124-0/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DW_OP_call2 and DW_OP_call4 didn't correctly advance the data pointer. This caused print_ops to produce garbage operands. Also format the arguments as DIE offsets. That makes it easier to follow the call to the actual dwarf_procedure DIE. Testcase from https://sourceware.org/bugzilla/show_bug.cgi?id=22532 The testcase only checks the eu-readelf output is correct for the byte_size attribute. But it might be interesting to write a full expression parser to check the actual sizes. [ 3e] structure_type name (strp) "pck__rec" byte_size (exprloc) [ 0] push_object_address [ 1] deref_size 1 [ 3] call4 [ 95] [ 8] plus_uconst 7 [ 10] const1s -4 [ 12] and [ 95] dwarf_procedure location (exprloc) [ 0] dup [ 1] lit1 [ 2] ne [ 3] bra 10 [ 6] lit4 [ 7] skip 31 [ 10] dup [ 11] lit4 [ 12] ne [ 13] bra 20 [ 16] lit0 [ 17] skip 31 [ 20] dup [ 21] lit3 [ 22] eq [ 23] bra 30 [ 26] lit0 [ 27] skip 31 [ 30] lit4 [ 31] swap [ 32] drop The "answer" depends on the Discr value (first byte at object address), and is rounded up to 4 or 8 bytes. Signed-off-by: Mark Wielaard <[email protected]>
| * readelf: Print CU, base address and unresolved .debug_loc entries.Mark Wielaard2017-11-294-21/+70
| | | | | | | | | | | | | | | | | | Also adjust the formatting for the resolved addresses to print them on separate lines so they nicely line up even when the addresses are resolved to symbol+offset names. And print the operands starting on a new line. Signed-off-by: Mark Wielaard <[email protected]>
| * readelf: Print CU, base address and unresolved .debug_range entries.Mark Wielaard2017-11-293-13/+48
| | | | | | | | | | | | | | | | Also adjust the formatting for the resolved addresses to print them on separate lines so they nicely line up even when the addresses are resolved to symbol+offset names. Signed-off-by: Mark Wielaard <[email protected]>
| * readelf: Print actual file for decl_file and call_file attributes.Mark Wielaard2017-11-293-21/+26
| | | | | | | | | | | | | | | | | | | | | | When we see a DW_AT_decl_file or DW_AT_call_file attribute print the actual file name. The current interface gives us a full (absolute) patch, but we only want to show the file name for now to not clutter the output too much. This helps a lot when trying to determine where something was declared if you are just looking at the DIE tree. Otherwise you'll have to cross match the number by hand with the corresponding line table entry. Signed-off-by: Mark Wielaard <[email protected]>
| * readelf: Print abbrev code for DIE with --debug-dump=info.Mark Wielaard2017-11-293-41/+46
| | | | | | | | | | | | | | If there is anything wrong with a DIE it is useful to know what the abbrev code was so you can lookup the abbrev description. Signed-off-by: Mark Wielaard <[email protected]>
| * readelf: Adjust print_ops formatting.Mark Wielaard2017-11-295-49/+56
| | | | | | | | | | | | | | Use only 2 spaces for index (there are never 10000, the most seen in the wild is 64). Adjust re-indenting after GNU_entry_value. Signed-off-by: Mark Wielaard <[email protected]>
| * tests: Fix cfi_debug => cfi_debug_bias typo in varlocs assert.Mark Wielaard2017-11-162-1/+5
| | | | | | | | | | | | | | | | | | | | We want to check whether the bias is zero, not whether we have dwarf debug_frame cfi. This triggered on a ppc64/ppc64le self-check since it has both debug_frame and eh_frame cfi (other arches often only have eh_frame). Signed-off-by: Mark Wielaard <[email protected]>
| * tests: Add varlocs-self and exprlocs-self tests.Mark Wielaard2017-11-155-16/+110
| | | | | | | | | | | | | | | | | | Make sure the testcases (library functions they use) don't crash, triggers self-check/asserts or leaks memory under valgrind. This also helps making sure newer DWARF constructs are handled (when building with -gdwarf-5). Signed-off-by: Mark Wielaard <[email protected]>
| * libdw: Handle DW_OP_GNU_variable_value.Mark Wielaard2017-11-105-7/+421
| | | | | | | | | | | | | | | | | | | | | | | | | | Handle DW_OP_GNU_variable_value in dwarf_getlocation[_attr,_die]. DW_OP_GNU_variable_value takes one argument a DIE reference that describes a value given by a location of const_value attribute. To test handling of the new operand the varlocs test is adapted to print out all DIEs and attributes with expressions or location lists (the original varlocs test only prints out variables and arguments of function DIEs). Signed-off-by: Mark Wielaard <[email protected]>
| * lib: Remove md5 and sha1 implementations.Mark Wielaard2017-10-203-97/+10
| | | | | | | | | | | | Only the testcase md5-sha1-test used them. So also remove that testcase. Signed-off-by: Mark Wielaard <[email protected]>
| * libelf: Add ELF_E_INVALID_ELF error value.Mark Wielaard2017-10-132-0/+5
| | | | | | | | | | | | | | | | Add ELF_E_INVALID_ELF which is set when the ELF file data is bad. This is different from ELF_E_INVALID_FILE which is set when the file could not be read. Signed-off-by: Mark Wielaard <[email protected]>
| * ar: Check whether ar header values fit.Mark Wielaard2017-09-203-2/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When compiling with -O3 gcc finds an interesting error: src/ar.c: In function ‘do_oper_insert’: src/ar.c:1077:56: error: ‘%-*ld’ directive output may be truncated writing between 6 and 10 bytes into a region of size 7 [-Werror=format-truncation=] snprintf (tmpbuf, sizeof (tmpbuf), ofmt ? "%-*lo" : "%-*ld", bufsize, val); ^~~~~ The problem is that the ar header values have to fit in a limited (not zero terminated) string. We should check the snprintf return value to see if the values are representable. Also make ar valgrind and ubsan clean and add a minimal sanity test. Reported-by: Matthias Klose <[email protected]> Signed-off-by: Mark Wielaard <[email protected]>
| * Drop -rdynamic from deleted-lib.so link stepUlf Hermann2017-08-182-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | -rdynamic is meant for ELF objects that need to export internal symbols to libraries they link to, but deleted-lib.so does not link to anything else and doesn't have any internal symbols. Note that the "deleted" test program does link to deleted-lib.so, but deleted-lib.so being a shared object, will automatically export the (non-hidden) "libfunc" symbol anyway. Signed-off-by: Ulf Hermann <[email protected]>
| * Check for -z,defs, -z,relro, -fPIC, -fPIE before using themUlf Hermann2017-08-182-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Those flags are not available on all platforms, and omitting them when not available will not cause any harm. In particular: -z,defs disallows undefined symbols in object files. This option is unsupported if the target binary format enforces the same condition already. Furthermore it is only a compile time sanity check. When it is omitted, the same binary is produced. -z,relro instructs the loader to mark sections read-only after loading the library, where possible. This is a hardening mechanism. If it is unavailable, the functionality of the code is not affected in any way. -fPIC instructs the compiler to produce position independent code. While this is preferable to relocatable code, relocatable code also works and may even be faster. Relocatable code might just be loaded into memory multiple times for different processes. -fPIE is the same thing as -fPIC for executables rather than shared libraries. Signed-off-by: Ulf Hermann <[email protected]>
| * tests: robustify run-strip-nothing.sh against unstripped libc_nonshared.aDmitry V. Levin2017-08-092-1/+5
| | | | | | | | | | | | | | | | | | When glibc's libc_nonshared.a contains objects with debug info, this debug info is leaked into every output file produced by gcc. Change run-strip-nothing.sh to use "gcc -s" instead of plain "gcc" for producing objects without debug info. Signed-off-by: Dmitry V. Levin <[email protected]>
* | Explicitly remove test files in run-strip-remove-keep.shQtCreator4.7.2QtCreator4.7.1QtCreator4.7.0-beta2QtCreator4.7.0-beta1QtCreator4.7.0QtCreator4.11.14.7Ulf Hermann2017-12-211-0/+14
| | | | | | | | | | | | | | | | strip moves the output files into place by calling rename(). On windows you cannot rename a file if the target file already exists. Change-Id: Ia296c1a357fa8e3610989f77b8149444e0863456 Reviewed-by: Christian Kandeler <[email protected]>
* | Check native binary format on new testsUlf Hermann2017-12-112-0/+10
| | | | | | | | | | | | | | | | run-strip-g.sh and run-strip-nothing.sh compile a file and then strip the result. This will only work if the compiler produces ELF files. Change-Id: I739ba0c1be96dca2278a672f5f67a90bc6ce12fa Reviewed-by: Christian Kandeler <[email protected]>
* | Merge tag 'elfutils-0.170'Ulf Hermann2017-08-1716-30/+1088
|\| | | | | | | | | | | elfutils 0.170 release Change-Id: I37d03645902b9f0a9fb708af1551db8843537799
| * libdw: Add DW_MACRO constants and DW_MACRO_GNU compatibility defines.Mark Wielaard2017-08-022-5/+9
| | | | | | | | | | | | | | | | | | | | Accept version 5 .debug_macro format, which is identical to the GNU version 4 format. No real support yet for the new supplementary object file (sup) and indirect string references (strx). GCC doesn't generate them yet. readelf does recognize them, but doesn't try to decode them. dwarf_getmacros currently rejects the new formats. Signed-off-by: Mark Wielaard <[email protected]>
| * libdw: Add dwarf_default_lower_bound.Mark Wielaard2017-08-023-2/+93
| | | | | | | | | | | | | | | | | | | | Add dwarf_default_lower_bound to get the default lower bound for a language when not given as attribute for an subrange type. Implementation extracted from dwarf_aggregate_size. Add a test to check all known language codes are handled. Signed-off-by: Mark Wielaard <[email protected]>
| * libdw: Add dwarf_line_file.Mark Wielaard2017-07-262-0/+27
| | | | | | | | Signed-off-by: Mark Wielaard <[email protected]>
| * ppc64: Add HTM SPRs support to readelfGustavo Romero2017-07-253-15/+20
| | | | | | | | | | | | | | | | | | | | Since POWER8, PowerPC 64 supports Hardware Transactional Memory, which has three special purpose registers associated to it: tfhar, tfiar, and texasr. This commit add HTM SPRs set as known note type so it's possible to use 'readelf --notes' to inspect the HTM SPRs in a coredump file generated in such a machines. Signed-off-by: Gustavo Romero <[email protected]>
| * strip: Deal with ARM data marker symbols pointing to debug sections.Mark Wielaard2017-07-243-2/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ARM data marker symbols "$d" indicate the start of a sequence of data items in a section. For data only sections no data marker symbol is necessary, but may be put pointing to the start of the section. binutils however has a bug which places a data marker symbol somewhere inside the section (at least for .debug_frame). https://sourceware.org/bugzilla/show_bug.cgi?id=21809 When strip finds a symbol pointing to a debug section that would be put into the .debug file then it will copy over the whole symbol table. This isn't necessary because the symbol is redundant. Add an ebl hook to recognize data marker symbols with implementations for arm and aarch64. Use it in strip to strip such symbols from the symbol table if they point to a debug section. Signed-off-by: Mark Wielaard <[email protected]>
| * backends: Don't depend on linux/bpf.h to compile bpf disassembler.Mark Wielaard2017-07-242-4/+5
| | | | | | | | | | | | | | | | | | We only need a few constants and one structure definition from linux/bpf. Just define those in a local lib/bpf.h file. This makes sure the bpf disassembler is always build and included even when elfutils is build on older GNU/Linux systems (and even on other platforms). Signed-off-by: Mark Wielaard <[email protected]>
| * Write to /dev/null rather than /dev/zeroUlf Hermann2017-07-242-1/+5
| | | | | | | | | | | | | | /dev/zero is meant for reading zeroes. /dev/null is for writing into nirvana. Signed-off-by: Ulf Hermann <[email protected]>
| * strip: Add --keep-section=SECTION and --remove-section=SECTION.Mark Wielaard2017-07-173-2/+696
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds two new output options: --keep-section=SECTION Keep the named section. SECTION is an extended wildcard pattern. May be given more than once. --remove-section=SECTION Remove the named section. SECTION is an extended wildcard pattern. May be given more than once. Only non-allocated sections can be removed. The --remove-section was already partially implemented, but only for the .comment section. The short option -R is to be compatible with binutils. The new testcase makes sure that various combinations of kept/removed sections pull the correct dependencies into the output and/or debug files. https://bugzilla.redhat.com/show_bug.cgi?id=1465997 Signed-off-by: Mark Wielaard <[email protected]>
| * strip: Don't generate empty output file when nothing to do.Mark Wielaard2017-06-143-0/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If there was nothing to do strip would skip generating a separate debug file if one was requested, but it would also not finish the creation of a new output file (with the non-stripped sections). Also if there was an error any partially created output would be kept. Make sure that when the -o output file option is given we always generate a complete output file (except on error). Also make sure that when the -f debug file option is given it is only generated when it is not empty. Add testcase run-strip-nothing.sh that tests the various combinations. https://sourceware.org/bugzilla/show_bug.cgi?id=21522 Signed-off-by: Mark Wielaard <[email protected]>
| * strip: Make sure old .shstrab is removed when eu-strip recreates it.Mark Wielaard2017-06-142-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Although we always recreate the .shstrtab section for the new output file we never explicitly assumed it could be removed. It might not be possible to remove it when the section string table is shared with a symbol table. But if it is removable we should (and recreate it for the new section list). Regression introduced in commit elfutils-0.163-33-gdf7dfab. "Handle merged strtab/shstrtab string tables in strip and unstrip." Add extra testcase to explicitly check for this case. https://sourceware.org/bugzilla/show_bug.cgi?id=21525 Signed-off-by: Mark Wielaard <[email protected]>
| * ppc64: Add minimal fallback unwinder.Mark Wielaard2017-06-126-1/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | This adds a minimal fallback unwinder for ppc64[le] in case we cannot find CFI for a particular address. It simply always sets the program counter to the link register, picks the previous stack pointer from the backchain, and the previous link register from the LR save area. This is enough for some simple situations when we don't have CFI and seems to work nicely in the case of perf with libdw powerpc support: https://lkml.org/lkml/2017/5/18/998 Signed-off-by: Mark Wielaard <[email protected]>
* | Merge tag 'elfutils-0.169'QtCreator4.5.1QtCreator4.5.0-rc1QtCreator4.5.0QtCreator4.4.1QtCreator4.4.0-rc1QtCreator4.4.0-beta1QtCreator4.4.04.54.4Ulf Hermann2017-05-0817-38/+181
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: ChangeLog backends/ChangeLog config/ChangeLog lib/ChangeLog libasm/ChangeLog libcpu/ChangeLog libdw/ChangeLog libdwfl/ChangeLog libdwfl/derelocate.c libdwfl/linux-kernel-modules.c libebl/ChangeLog libelf/ChangeLog src/ChangeLog tests/ChangeLog Change-Id: I3b7ced947c6498290aaae27443985b84531f0bcd
| * Add frame pointer unwinding for aarch64 and relax backtrace testcases.Ulf Hermann2017-05-027-1/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we don't find any debug information for a given frame, we usually cannot unwind any further. However, the binary in question might have been compiled with frame pointers, in which case we can look up the well known frame pointer locations in the stack snapshot and use them to bridge the frames without debug information. Relax the backtrace core testcases a little by allowing a duplicate sigusr2 frame or a backtrace ending with an invalid register. Both of which can happen if the frame pointer unwinder guesses slightly wrong. Signed-off-by: Ulf Hermann <[email protected]> Signed-off-by: Mark Wielaard <[email protected]>
| * Add i386 frame pointer unwinder.Mark Wielaard2017-05-025-1/+42
| | | | | | | | | | | | | | Add a simple i386_unwind.c frame pointer unwinder as fallback if DWARF/CFI unwinding fails. Signed-off-by: Mark Wielaard <[email protected]>
| * Add frame pointer unwinding as fallback on x86_64Ulf Hermann2017-05-025-0/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | If we don't find any debug information for a given frame, we usually cannot unwind any further. However, the binary in question might have been compiled with frame pointers, in which case we can look up the well known frame pointer locations in the stack snapshot and use them to bridge the frames without debug information. The "unwind" hook is the right place for this as it is so far only used on s390 and called only after trying to unwind with debug information. Signed-off-by: Ulf Hermann <[email protected]>
| * tests: Add core backtracegen check and regen ppc32 backtrace testfiles.Mark Wielaard2017-05-025-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | Add a check to check_core to make sure the backtracegen function is found in the backtrace. This function is in the middle of the backtrace in the main executable and if not found it means the backtrace was incomplete or the frame was skipped (which could happen on a bad frame pointer only unwind). This showed that the ppc32 backtrace test files were missing DWARF CFI for the main executable. Regenerated them to include full CFI. Signed-off-by: Mark Wielaard <[email protected]>
| * Revert "Optionally allow unknown symbols in the backtrace tests"Mark Wielaard2017-05-023-31/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit f9971cb422df39adea7e8c7e22689b879e39c626. Allowing no symbol resolving at all makes it too hard to see whether the test actually tests anything. But do keep "address out of range" as allowed error in check_err. This can be interpreted as DWARF not available (if end of callstack marker is missing, which it unfortunately often is missing even if CFI is available.). Signed-off-by: Mark Wielaard <[email protected]>
| * Avoid YESSTR and NOSTRUlf Hermann2017-04-263-18/+24
| | | | | | | | | | | | | | | | | | Those are deprecated and apparently some implementations of nl_langinfo return empty strings for them. The tests even tested for those empty strings even though the intention of the code was clearly to output "yes" or "no" there. Signed-off-by: Ulf Hermann <[email protected]>
| * Clean up linux-specific system includesUlf Hermann2017-04-263-2/+7
| | | | | | | | | | | | We only include them where we actually need them and only on linux. Signed-off-by: Ulf Hermann <[email protected]>
* | Define uid_t and gid_t in system-elf-libelf-test.c if necessaryUlf Hermann2017-05-082-0/+9
| | | | | | | | | | | | | | | | | | | | | | elf.h does include features.h which should define those. However, on windows there is no features.h. We have the empty features.h in libgnu that depends on config.h being included before (which we can't), and the features.h in lib that is only available when installed in selfcontained mode. Therefore we need a workaround here. Change-Id: Ib9074d485ab56e53eb671b859e085b934a782b55 Reviewed-by: Christian Kandeler <[email protected]>