AgeCommit message (Collapse)AuthorFilesLines
2017-06-01libelf: Build elf_compress.candroid-etnavivRobert Foss1-0/+1
Signed-off-by: Robert Foss <>
2016-01-25Merge "Merge upstream 0.165 SHA '203f0a3'"Chih-hung Hsieh100-4615/+11024
2016-01-25Merge upstream 0.165 SHA '203f0a3'Chih-Hung Hsieh100-4615/+11024
* git merge 203f0a3 * See all upstream changes since the previous merge in branch aosp/upstream-master: git diff 9d1e236..203f0a3 * Android relevant upstream changes: * Version number changed from 0.164 to 0.165 * libelf now depends on zlib * Changed version number in generated files: version.h, config.h * No change to generated files: libdw/known-dwarf.h * Updated libelf/ * added new source files: gelf_getchdr.c elf{32,64}_getchdr.c elf_compress.c * added LOCAL_STATIC_LIBRARIES := libz Change-Id: Ieb306d84ffcaf680ad6e74da28fcc8efbf00592a
2016-01-23Move nested functions in elf_compress.c and elf_strptr.c.Chih-Hung Hsieh3-26/+39
* elf_compress.c (__libelf_compress): do_deflate_cleanup * elf_strptr.c (elf_strptr): get_zdata Signed-off-by: Chih-Hung Hsieh <>
2016-01-18tests: Skip dwfl-bug-fd-leak test if dwfl_linux_proc_report is unsupported.Mark Wielaard2-0/+14
Signed-off-by: Mark Wielaard <>
2016-01-18elflint: Recognize ELFOSABI_FREEBSD which Debian kFreeBSD uses.Mark Wielaard2-2/+8
Signed-off-by: Mark Wielaard <>
2016-01-18tests: Guard linux specific header includes with ifdef __linux__.Mark Wielaard2-0/+6
Signed-off-by: Mark Wielaard <>
2016-01-14configure: clarify zlib error messageMike Frysinger1-1/+1
Also drop the spurious quotes. Signed-off-by: Mike Frysinger <>
2016-01-14gitignore: updateMike Frysinger1-0/+3
Signed-off-by: Mike Frysinger <>
2016-01-14libelf: Add ELF compression types and defines to libelf.h for older glibc.Mark Wielaard5-2/+83
Older glibc elf.h might not define the new ELF compression defines and types. If not just define them in libelf.h directly to make the libelf headers work on older glibc systems. Also include a testcase to check the libelf headers build against the system elf.h. Signed-off-by: Mark Wielaard <>
2016-01-11Regenerate .po files.Mark Wielaard6-60/+64
Signed-off-by: Mark Wielaard <>
2016-01-09libebl: Fix missing brackets around if statement body.Mark Wielaard2-180/+187
GCC6 [will have] a nice new warning that showed a real bug: elfutils/libebl/eblobjnote.c: In function ‘ebl_object_note’: elfutils/libebl/eblobjnote.c:135:5: error: statement is indented as if it were guarded by... [-Werror=misleading-indentation] switch (type) ^~~~~~ elfutils/libebl/eblobjnote.c:45:3: note: ...this ‘if’ clause, but it is not if (! ebl->object_note (name, type, descsz, desc)) ^~ And indeed, it should have been under the if, but wasn't because of missing brackets. Added brackets (and reindent). Signed-off-by: Mark Wielaard <>
2016-01-08tests: Fix parentheses in elfputzdata strncmp test.Mark Wielaard2-1/+5
We were checking strlen () == 0 instead of strncmp () == 0. Oops. Signed-off-by: Mark Wielaard <>
2016-01-08Fix build on 32bit systems.Mark Wielaard5-3/+12
size_t has a different size on 32 and 64 bit systems. Signed-off-by: Mark Wielaard <>
2016-01-08Prepare 0.165 release.Mark Wielaard11-2967/+3330
Signed-off-by: Mark Wielaard <>
2016-01-08Simplify code and build now that zlib support is no longer optional.Mark Wielaard6-25/+20
Now that we always require zlib support we don't need to conditionally build or compile code that depends on it. Signed-off-by: Mark Wielaard <>
2016-01-08Updated Polish translationPiotr Drąg1-723/+824
Signed-off-by: Piotr Drąg <>
2016-01-07Updated Polish translationPiotr Drąg1-659/+724
Signed-off-by: Piotr Drąg <>
2016-01-06elfcompress: New utility.Mark Wielaard6-3/+1440
Usage: elfcompress [OPTION...] FILE... Compress or decompress sections in an ELF file. -f, --force Force compression of section even if it would become larger -n, --name=SECTION SECTION name to (de)compress, SECTION is an extended wildcard pattern (defaults to '.?(z)debug*') -o, --output=FILE Place (de)compressed output into FILE -p, --permissive Relax a few rules to handle slightly broken ELF files -q, --quiet Be silent when a section cannot be compressed -t, --type=TYPE What type of compression to apply. TYPE can be 'none' (decompress), 'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias) or 'zlib-gnu' (.zdebug GNU style compression, 'gnu' is an alias) -v, --verbose Print a message for each section being (de)compressed -?, --help Give this help list --usage Give a short usage message -V, --version Print program version Signed-off-by: Mark Wielaard <>
2016-01-06elflint: Recognize and check SHF_COMPRESSED section flag.Mark Wielaard2-10/+43
SHF_COMPRESSED is a valid section flag, it can optionally be on any special section, but it cannot be used on NOBITS sections or together with SHF_ALLOC. A section that has SHF_COMPRESSED set must have a valid Chdr. Signed-off-by: Mark Wielaard <>
2016-01-06libelf: Make elf_strptr index correctly into compressed section data.Mark Wielaard10-59/+445
elf_strptr indexes into the section data. This is defined as index into the uncompressed data of the section. If the section is compressed make sure the uncompressed data is available, but don't really decompress the section header (elf_getdata will still return compressed data). Signed-off-by: Mark Wielaard <>
2016-01-06readelf: Handle compressed sections and extend -z to cover -x and -p.Mark Wielaard10-23/+609
When printing a (non-string, non-data) section use uncompressed data when possible. For dumping hex and string sections (-x and -p) -z will dump the uncompressed data (otherwise the compressed data is dumped). -z, --decompress Show compression information for compressed sections (when used with -S); decompress section before dumping data (when used with -p or -x) Includes test cases for ET_REL files using compressed relocation (target) debug sections to test libdwfl transparent uncompression of sections. Signed-off-by: Mark Wielaard <>
2016-01-06libdwfl: Use elf_compress[_gnu] to decompress string, symbol and reloc data.Mark Wielaard5-32/+201
This makes usage of the libdwfl symbol functions work out of the box even when some sections (string, symbol or xndx) are compressed. For ET_REL files this makes relocations just work by making sure the target section is decompressed first before relocations are applied. Signed-off-by: Mark Wielaard <>
2016-01-06libdw: Use elf_compress[_gnu] to uncompress debug section data.Mark Wielaard4-137/+63
libdw used its own code for decompressing GNU style .zdebug sections. Using elf_compress and elf_compress_gnu instead makes it possible to transparently use either GNU style or ELF style compressed data. Signed-off-by: Mark Wielaard <>
2016-01-06libelf: Add elf_compress and elf_compress_gnu.Mark Wielaard20-26/+1822
Signed-off-by: Mark Wielaard <>
2016-01-06readelf: Add -z,--decompress option.Mark Wielaard5-4/+281
-z, --decompress Show compression information for compressed sections (when used with -S). Signed-off-by: Mark Wielaard <>
2016-01-06libelf: Add elf32_getchdr, elf64_getchdr and gelf_getchdr.Mark Wielaard26-18/+676
Elf_Data of a compressed section has type ELF_T_CHDR. This type can be xlated to the file or memory representation. This will make sure the Chdr is in the correct endianess. The compressed data following the Chdr isn't translated. Signed-off-by: Mark Wielaard <>
2016-01-06libdwelf: Add dwelf_scn_gnu_compressed_size.Mark Wielaard14-6/+334
Helper function to get the size of a GNU compressed zdebug section. Signed-off-by: Mark Wielaard <>
2016-01-05Merge "Merge upstream SHA '9d1e236'"Chih-hung Hsieh51-578/+1407
2016-01-05config: Add libelf and libdw pkg-config files.Mark Wielaard7-3/+68
Signed-off-by: Mark Wielaard <>
2016-01-05elflint: Add _edata and _end to the list of possibly dangling gnuld symbols.Mark Wielaard2-1/+10
gnuld might keep dangling/unused symbols around (see sourceware PR13621). Add _edata (end of initialized data address) and _end (end of uninitialized data address) to that list. They might have been added by gnuld even if there is no such [un]initialized data. Also add the double underscore variants which are used on some architectures. Signed-off-by: Mark Wielaard <>
2016-01-05tests: elfstrmerge warn about STT_SECTION symbol for shstrhndx.Mark Wielaard4-4/+56
Old linkers might have created an STT_SECTION symbol for the section header string table section, which isn't actually used. For now just warn about such symbols. If such a symbol would actually really be used (but why?) then we would have to handle it by removing it and rewriting the symbol table. This is a testsuite only change, but includes an extra test with files that have such STT_SECTION symbols to make sure it will be handled in case we "upgrade" the elfstrmerge test to a real utility. Signed-off-by: Mark Wielaard <>
2016-01-05Make make more silent.Mark Wielaard2-1/+9
Silent rules already are the default, but automake and make both still tell which directory is being entered/build. Disable printing from make. Signed-off-by: Mark Wielaard <>
2016-01-04Merge upstream SHA '9d1e236'Chih-Hung Hsieh51-578/+1407
* git merge 9d1e236 * See all upstream changes since the previous merge in branch aosp/upstream-master: git diff b47fb23..9d1e236 * Android relevant upstream changes: Move nested functions to file scope to compile with clang/llvm: libdw/dwarf_entry_breakpoints.c libdw/libdw_visit_scopes.c libdwfl/core-file.c libdwfl/dwfl_module_addrsym.c libdwfl/dwfl_module_getdwarf.c libdwfl/link_map.c libdwfl/linux-proc-maps.c * Other upstream changes: backends: sparc: support for live backtraces elfcmp: Fix leaking Ebl handles. libdw: Don't leak fake_loc_cu. libdw: Don't leak duplicate FDEs. libdw: Don't use a FDE if it doesn't actually cover a real code range. libdw: Make sure Ebl is always freed from cfi frame cache. libdwfl: Don't leak core Elf and core file descriptor from argp-std. libdwfl: Fix memory leak in link_map.c dwfl_link_map_report. libdwfl: make the unwinder aware of the backend defined ra_offset. libebl: new backend attribute ra_offset. nm: Don't leak duplicate Dwarf local names. nm: If the file is ET_REL and we need Dwarf use libdwfl to get it relocated. tests: Fix some memory leaks in testcases. tests: Use valgrind --leak-check=full. unstrip: Don't leak new section data. * No changes to the following generated files: version.h, config.h, libdw/known-dwarf.h * Post merge change: Enable clang compilation in the libdw directory. Change-Id: Ifa9e60b1d5ab1c70da69410509cc9f3abdf58661
2016-01-03Move nested functions in linux-proc-maps.c to file scope.Chih-Hung Hsieh2-14/+22
* Move nested function 'report' to file scope to compile with clang. Signed-off-by: Chih-Hung Hsieh <>
2016-01-03Move nested functions in core-file.c to file scope.Chih-Hung Hsieh2-42/+59
* Move nested functions 'fail', 'update_end', and 'more' to file scope. Signed-off-by: Chih-Hung Hsieh <>
2016-01-03Move nested functions check64 and check32 in link_map.c to file scope.Chih-Hung Hsieh2-47/+58
* In libdwfl/link_map.c, nested functions check64, check32, are moved to file scope to compile with clang. Signed-off-by: Chih-Hung Hsieh <> Signed-off-by: Mark Wielaard <>
2016-01-03backends: sparc: support for live backtracesJose E. Marchesi4-1/+137
This patch implements the set_initial_registers_tid hook for sparc. It works in both sparcv9-*-* and sparc64-*-* targets. Signed-off-by: Jose E. Marchesi <>
2016-01-03backends: sparc: support for core backtracesJose E. Marchesi10-3/+142
This patch adds sparc support to the unwinder, providing a default CFI program that works in both sparcv9-*-* and sparc64-*-* targets. Signed-off-by: Jose E. Marchesi <> Signed-off-by: Mark Wielaard <>
2016-01-03libdwfl: make the unwinder aware of the backend defined ra_offset.Jose E. Marchesi3-2/+16
Ebl backends can define an offset that must be applied to the value of the "return address register" defined in the CFI ABI information. This patch makes the unwinder to use that offset when reading the RA CFI register. Signed-off-by: Jose E. Marchesi <>
2016-01-03libebl: new backend attribute ra_offset.Jose E. Marchesi4-0/+24
Some backends need to fine-tune the return address as fetched from the corresponding CFI register. This patch adds a new backend attribute ra_offset and the corresponding ebl_ra_offset getter function. Signed-off-by: Jose E. Marchesi <>
2016-01-02tests: Use valgrind --leak-check=full.Mark Wielaard6-1/+50
When --enable-valgrind is given run the testsuite with --leak-check=full treating any memory leak as a failure. Also disable valgrind for those tests that trigger a valgrind bug. Signed-off-by: Mark Wielaard <>
2016-01-02libdw: Don't leak duplicate FDEs.Mark Wielaard2-1/+14
Although it isn't supposed to happen there could be FDEs that cover the same address range. Don't leak such FDEs and use an existing FDE for consistency. Signed-off-by: Mark Wielaard <>
2016-01-02nm: If the file is ET_REL and we need Dwarf use libdwfl to get it relocated.Mark Wielaard2-8/+116
If we need Dwarf and the file is ET_REL use the same trick as in readelf to get a relocated Dwarf. Otherwise lots of references in the debug_info will come out as zero. This also explains the "bogus" Dwarf seen that caused the memory leak in the local_root that was fixed previously. Signed-off-by: Mark Wielaard <>
2016-01-02nm: Don't leak duplicate Dwarf local names.Mark Wielaard2-5/+14
Badly formed DWARF can have duplicate local names. In which case we do want to detect those so we don't leak the memory. Signed-off-by: Mark Wielaard <>
2016-01-02unstrip: Don't leak new section data.Mark Wielaard2-2/+47
When we copy elided sections some section data is newly allocated. Track those allocations so we can free them when done. Signed-off-by: Mark Wielaard <>
2016-01-02libdw: Don't use a FDE if it doesn't actually cover a real code range.Mark Wielaard2-0/+12
If the FDE end <= start then it doesn't actually cover a valid code range. Don't use and cache such FDEs (it will cause memory leaks if there is another FDE that has the same start address and a valid code range). Such FDEs have been seen in the backtrace.ppc.exec testfile. Signed-off-by: Mark Wielaard <>
2016-01-02libdwfl: Fix memory leak in link_map.c dwfl_link_map_report.Mark Wielaard2-2/+12
The phdrs buffer could come from the core file or through the executable. dwfl_link_map_report would leak the buffer if it came from the executable. Track where the buffer came from and free appropriately. Signed-off-by: Mark Wielaard <>
2016-01-02libdwfl: Don't leak core Elf and core file descriptor from argp-std.Mark Wielaard7-17/+82
Our argp helper would leak the core Elf and core file descriptor when given by the user. Store both in the Dwfl as a new Dwfl_User_Core so they get cleaned up by dwfl_end. Signed-off-by: Mark Wielaard <>
2016-01-02tests: Fix some memory leaks in testcases.Mark Wielaard9-4/+36
Make sure all structures allocated in the testcases are disposed so running them under valgrind will show no memory leaks. Signed-off-by: Mark Wielaard <>