summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* elfcompress: Don't compress if section already compressed unless forcedMark Wielaard2023-05-081-20/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | Before commit a5b07cdf9 "support ZSTD compression algorithm" elfcompress would not try to compress a section if it already had the requested compression type (or was already uncompressed) unless the --force flag was given. An else if construct was changed to an if in the commit causing elfcompress to warn (in verbose mode) but then still try to (re)compress the section. Add an explicit check so if nothing needs (un)compressing, the file isn't changed. The diff looks large, but git diff -b -w is just: + if (force || type != schtype) + { if (shdr->sh_type != SHT_NOBITS && (shdr->sh_flags & SHF_ALLOC) == 0) { @@ -554,6 +556,7 @@ process_file (const char *fname) printf ("[%zd] %s ignoring %s section\n", ndx, sname, (shdr->sh_type == SHT_NOBITS ? "no bits" : "allocated")); } + } Signed-off-by: Mark Wielaard <mark@klomp.org>
* readelf: display dynamic symtab without section headersDi Chen2023-04-182-151/+393
| | | | | | | | | | | | | | | | | | | | | | This commit adds a new option "-D/--use-dynamic" to support printing the dynamic symbol table from the PT_DYNAMIC segment. By using the PT_DYNAMIC segment, eu-readelf can go through the contents of dynamic section entries and the values of each tag. From that, we can get the address and size of the dynamic symbol table, the address of the string table, etc. By using the new option "-D/--use-dynamic", eu-readelf can list the symbols without section headers. Example: $ ./src/readelf -Ds a.out 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UNDEF 1: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF __libc_start_main@GLIBC_2.34 (2) 2: 0000000000000000 0 NOTYPE WEAK DEFAULT UNDEF __gmon_start__ https://sourceware.org/bugzilla/show_bug.cgi?id=28873 Signed-off-by: Di Chen <dichen@redhat.com>
* readelf: Handle NULL shdr in section_nameMark Wielaard2023-04-141-1/+1
| | | | | | | | | | In some error cases we want to show the section name but cannot because the section header is corrupt or NULL. Make sure the section_name always returns "???" in that case. * src/readelf.c (section_name): Check for shdr == NULL. Signed-off-by: Mark Wielaard <mark@klomp.org>
* Fix static build when zstd is enabled for libelfMark Wielaard2023-03-031-1/+1
| | | | | | | | | | | | | | | | | When doing a static build (as with --enable-gcov) the build fails because the executables aren't linked with -lzstd. Also the run-debuginfod-query-retry.sh test relies on libdebuginfod.so.1 which isn't there. Fix by adding $(zstd_LIBS) to the static libelf lines and using the debuginfod-find executable itself in the testcase. * src/Makefile.am (libelf): When BUILD_STATIC add $(zstd_LIBS) * tests/Makefile.am (libelf): Likewise. * tests/run-debuginfod-query-retry.sh: Use debuginfod-find instead of libdebuginfod.so.1 Signed-off-by: Mark Wielaard <mark@klomp.org>
* readelf: Fix use-after-free ebl pointer issueMark Wielaard2023-03-032-2/+8
| | | | | | | | | | | | | | | | | | | | | With -flto gcc 13 sees that we use the ebl pointer after closing and freeing it. In function ‘process_elf_file’, inlined from ‘process_dwflmod’ at readelf.c:818:3: readelf.c:1070:6: error: pointer ‘ebl_18’ used after ‘free’ [-Werror=use-after-free] 1070 | if (pure_ebl != ebl) | ^ In function ‘ebl_closebackend’, inlined from ‘process_elf_file’ at readelf.c:1068:3, inlined from ‘process_dwflmod’ at readelf.c:818:3: ../libebl/eblclosebackend.c:47:7: note: call to ‘free’ here 47 | free (ebl); | ^ Fix by only calling ebl_closebackend after using it in the comparison. Signed-off-by: Mark Wielaard <mark@klomp.org>
* libdw, readelf, elflint: Add get_(u|s)leb128 guardsMark Wielaard2023-02-143-0/+29
| | | | | | | | | Add sanity check making sure an leb128 isn't being read beyond the end of the current data segment. Most code already had these guards, but some were missing. This makes sure an appropriate error is generated instead. Signed-off-by: Mark Wielaard <mark@klomp.org>
* readelf: Fix set but not used parameterIlya Leoshkevich2023-02-091-12/+5
| | | | | | | | | | | | | | | | | | | | | | | clang complains: readelf.c:12205:72: error: parameter 'desc' set but not used [-Werror,-Wunused-but-set-parameter] handle_bit_registers (const Ebl_Register_Location *regloc, const void *desc, ^ Mark Wielaard says: It is never really used since as far as I can see we don't have any backend with a core register sets where a register doesn't have a number of bits which isn't a multiple of 8 (only ia64 has some 1 bit registers, but those don't seem part of the core register set). If we do accidentally try to handle such a register having an abort is also not very nice. Lets just warn and return/continue. https://sourceware.org/bugzilla/show_bug.cgi?id=30084 Co-developed-by: Mark Wielaard <mark@klomp.org> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
* readelf: Fix set but not used variableIlya Leoshkevich2023-02-081-2/+0
| | | | | | | | | | | | clang complains: readelf.c:10250:10: error: variable 'nculist' set but not used [-Werror,-Wunused-but-set-variable] size_t nculist = 0; ^ Fix by deleting it. Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
* addr2line: -C should not try to handle optional (ignored) argumentMark Wielaard2023-01-302-2/+11
| | | | | | | | | | | | | | | | The --demangle option takes an option (ignored) argument. Since -C is the short option of --demangle it also takes that optional argument. But that means that something like -Cfi is like -C got fi as argument, while the user expects -Cfi to be like -C -f -i. Separate the --demangle and -C options. --demangle still takes an optional (ignored) argument, but -C doesn't take any arguments so -Cfi acts the same as -fiC. Also fix --target, -b, so that it is properly ignored (and not accidentially enables demangling). Signed-off-by: Mark Wielaard <mark@klomp.org>
* readelf: Check compression status of .debug section dataMark Wielaard2023-01-162-102/+130
| | | | | | | | | | The various print_debug_*_section functions didn't get the section data in the same way. Add a new get_debug_elf_data function that gets the (possibly relocated) section data and that checks (and warns) if the data might still be compressed in a way that we cannot decompress. Signed-off-by: Mark Wielaard <mark@klomp.org>
* Fix typos from codespellSam James2023-01-132-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | debuginfod/ChangeLog: * debuginfod-client.c: Typo simultaniously. doc/ChangeLog: * debuginfod.8: Typo succesfully. lib/ChangeLog: * dynamicsizehash_concurrent.c: Typo modul. * system.h: Typo dependend. libdwfl/ChangeLog: * open.c: Typo non-existant. src/ChangeLog: * nm.c: Typo Covert. * strings.c: Likewise. tests/ChangeLog: * elfstrmerge.c: Typo outselves. * run-debuginfod-extraction.sh: Typo accidentially. * run-debuginfod-fd-prefetch-caches.sh: Likewise. Signed-off-by: Sam James <sam@gentoo.org>
* support ZSTD compression algorithmMartin Liska2022-12-232-67/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | config/ChangeLog: * libelf.pc.in: Add LIBLZSTD to Requires.private. ChangeLog: * configure.ac: Detect ZSTD streaming API. libelf/ChangeLog: * Makefile.am: Use zstd_LIBS. * elf_compress.c: (__libelf_compress): Split into ... (__libelf_compress_zlib): ... this. (do_zstd_cleanup): New. (zstd_cleanup): New. (__libelf_compress_zstd): New. (__libelf_decompress): Switch in between zlib and zstd. (__libelf_decompress_zlib): Renamed from __libelf_decompress. (__libelf_decompress_zstd): New. (__libelf_decompress_elf): Dispatch in between compression algorithms. (elf_compress): Likewise. * elf_compress_gnu.c (elf_compress_gnu): Call with ELFCOMPRESS_ZLIB. * libelfP.h (__libelf_compress): Add new argument. (__libelf_decompress): Add chtype argument. src/ChangeLog: * elfcompress.c (enum ch_type): Add ZSTD. (parse_opt): Parse "zstd". (get_section_chtype): New. (process_file): Support zstd compression. (main): Add zstd to help. * readelf.c (elf_ch_type_name): Rewrite with switch. tests/ChangeLog: * Makefile.am: Add ELFUTILS_ZSTD if zstd is enabled. * run-compress-test.sh: Test zstd compression algorithm for debug sections.
* Add support for Synopsys ARCv2 processorsShahab Vahedi2022-12-222-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is no regression in tests for an x86_64 build, while the new hello_arc_hs4.ko is added as well. This is the only meaningful test that I could add at the moment, given the features supported by this port. $ cat tests/test-suite.log ========================================== elfutils 0.188: tests/test-suite.log ========================================== # TOTAL: 236 # PASS: 235 # SKIP: 1 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 .. contents:: :depth: 2 SKIP: run-lfs-symbols.sh ======================== LFS testing is irrelevant on this system SKIP run-lfs-symbols.sh (exit status: 77) $ cat tests/run-strip-reloc.sh.log runtest hello_i386.ko runtest hello_x86_64.ko runtest hello_ppc64.ko runtest hello_s390.ko runtest hello_aarch64.ko runtest hello_m68k.ko runtest hello_riscv64.ko runtest hello_csky.ko runtest hello_arc_hs4.ko <-- [ new ARC HS4 test ] runtest /home/shahab/pahole_pkg/elfutils-git/bld_arc/src/strip runtest /home/shahab/pahole_pkg/elfutils-git/bld_arc/src/strip.o runtest strip-uncompressed.o runtest strip-compressed.o runtest testfile-debug-rel-ppc64.o runtest testfile-debug-rel-ppc64-z.o runtest testfile-debug-rel-ppc64-g.o PASS run-strip-reloc.sh (exit status: 0) Signed-off-by: Shahab Vahedi <shahab@synopsys.email>
* Add support for LoongArchHengqi Chen2022-12-192-1/+5
| | | | | | This implements initial support for the LoongArch architecture. Signed-off-by: Hengqi Chen <hengqi.chen@gmail.com>
* Refactor elf_compareMartin Liska2022-11-291-63/+110
| | | | | | | | | | | | | | | src/ChangeLog: * elfcompress.c (T_UNSET): Remove and use ch_type. (T_DECOMPRESS): Likewise. (T_COMPRESS_ZLIB): Likewise. (T_COMPRESS_GNU): Likewise. (enum ch_type): New. (parse_opt): Parse to new ch_type. (compress_section): Change gnu and compress arguments to schtype (source compression) and dchtype (destination compression). (process_file): Use new enum type and adjusted compress_section.
* Missing newline for: elfcompress -t zlib-gnu a.out -forceMartin Liska2022-11-281-1/+1
| | | | | | | | | | | | | | | | | | | | Fixes: ./src/elfcompress -t zlib-gnu a.out -force [28] .zdebug_aranges unchanged, already GNU compressed[29] .zdebug_info unchanged, already GNU compressed[30] .zdebug_abbrev unchanged, already GNU compressed[31] .zdebug_line unchanged, already GNU compressed[32] .zdebug_str unchanged, already GNU compressed[33] .zdebug_line_str unchanged, already GNU compressed[34] .zdebug_rnglists unchanged, already GNU compressed to: ./src/elfcompress -t zlib-gnu a.out -force [28] .zdebug_aranges unchanged, already GNU compressed [29] .zdebug_info unchanged, already GNU compressed [30] .zdebug_abbrev unchanged, already GNU compressed [31] .zdebug_line unchanged, already GNU compressed [32] .zdebug_str unchanged, already GNU compressed [33] .zdebug_line_str unchanged, already GNU compressed [34] .zdebug_rnglists unchanged, already GNU compressed src/ChangeLog: * elfcompress.c (process_file): Add missing newline.
* readelf: print warning for -sWMartin Liska2022-11-281-5/+18
| | | | | | | | | | | | | | | | | | | | | The option -s accepts in elfutils (compared to binutils) a positional argument that is name of a symbol table section which should be printed. Thus, print a reasonable warning if -sW is used: ./src/readelf -sW a.out WARNING: cannot find section: 'W' PR29719 src/ChangeLog: * readelf.c (print_symtab): Change signature and return true if something is printed. (process_elf_file): Use it and print warning. tests/ChangeLog: * run-readelf-s.sh: Test -sW.
* readelf: Check gelf_getdyn doesn't return NULLMark Wielaard2022-11-032-1/+6
| | | | Signed-off-by: Mark Wielaard <mark@klomp.org>
* readelf: Check phdr != NULL or shdr != NULL in handle_dynamic.Mark Wielaard2022-11-032-5/+10
| | | | | | | | | The compiler doesn't know that when use_dynamic_segment is true, then phdr should/will be non-NULL and otherwise shdr is non-NULL. Add explicit checks to help the compiler out and in case an error is made calling the handle_dynamic function. Signed-off-by: Mark Wielaard <mark@klomp.org>
* readelf: add binutils-style --syms optionArsen Arsenović2022-10-302-0/+5
| | | | | | This helps people with a lot of built up muscle memory :) Signed-off-by: Arsen Arsenović <arsen@aarsen.me>
* readelf: Handle DW_LLE_GNU_view_pairMark Wielaard2022-10-272-0/+18
| | | | | | | | DW_LLE_GNU_view_pair is used by gcc -gvariable-location-views=incompat5. As described in http://www.fsfla.org/~lxoliva/papers/sfn/dwarf6-sfn-lvu.txt and proposed for DWARF6 https://dwarfstd.org/ShowIssue.php?issue=170427.1 Signed-off-by: Mark Wielaard <mark@klomp.org>
* Strip __ prefix from __BYTE_ORDER __LITTLE_ENDIAN and __BIG_ENDIANYonggang Luo2022-10-172-1/+5
| | | | | | | | __BYTE_ORDER, __LITTLE_ENDIAN and __BIG_ENDIAN are defined by the gcc/clang preprocessor. BYTE_ORDER, LITTLE_ENDIAN and BIG_ENDIAN are defined in <endian.h>. Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
* Move the #include <libintl.h> into eu-config.hYonggang Luo2022-10-1616-16/+0
| | | | | | | | | | So we do not need include in each file. And indeed the macro #define _(Str) dgettext ("elfutils", Str) access libintl function dgettext, so it's make more sense #include <libintl.h> in file eu-config.h Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
* ar: Correct -N COUNT off-by-oneMark Wielaard2022-09-142-2/+8
| | | | | | | | | | | | | When using instance [COUNT], the instance check is wrong. instance-- == 0 should be --instance == 0. Add a testcase run-ar-N.sh that uses -N COUNT with extract and delete operations checking the right instance was extracted and deleted. https://sourceware.org/bugzilla/show_bug.cgi?id=28725 Reported-by: panxiaohe <panxh_ran@163.com> Signed-off-by: Mark Wielaard <mark@klomp.org>
* readelf: Handle SHT_RISCV_ATTRIBUTES like SHT_GNU_ATTRIBUTESAndreas Schwab2022-08-132-1/+7
| | | | Signed-off-by: Andreas Schwab <schwab@suse.de>
* elflint: Allow zero p_memsz for PT_RISCV_ATTRIBUTESAndreas Schwab2022-08-092-1/+9
| | | | | | The RISCV_ATTRIBUTES segment is not meant to be loaded. Signed-off-by: Andreas Schwab <schwab@suse.de>
* readelf: memrchr searches backwards but takes the start buf as argumentMark Wielaard2022-08-012-4/+9
| | | | | | The bug (caught by valgrind) was giving memrchr to end of the buffer. Also as cleanup, Use d_val not d_ptr for calculating offset.
* readelf: Support --dynamic with --use-dynamicDi Chen2022-08-012-26/+199
| | | | | | | | | | | | Currently, eu-readelf is using section headers to dump the dynamic segment information (print_dynamic -> handle_dynamic). This patch adds new options to eu-readelf (-D, --use-dynamic) for (-d, --dynamic). https://sourceware.org/bugzilla/show_bug.cgi?id=28873 Signed-off-by: Di Chen <dichen@redhat.com>
* strip: Add more NULL checkMark Wielaard2022-05-142-2/+15
| | | | | | | | When gelf_getshdr, gelf_getrela, gelf_getrel or gelf_getsymshndx return NULL it is an internal error which we want to report instead of crashing. Signed-off-by: Mark Wielaard <mark@klomp.org>
* elfcompress: Add sanity checks to make sure to not override variableMark Wielaard2022-05-142-0/+29
| | | | | | | The process_file code is a little tricky. Add sanity checks to make sure shstrtab_name, shstrtab_newname and symstrents are only set once. Signed-off-by: Mark Wielaard <mark@klomp.org>
* elfclassify: Fix --no-stdin flagMark Wielaard2022-04-242-1/+5
| | | | | | | | | The no-stdin option was using the wrong flag, classify_flag_stdin, instead of classify_flag_no_stdin. https://sourceware.org/bugzilla/show_bug.cgi?id=28724 Signed-off-by: Mark Wielaard <mark@klomp.org>
* readelf: Define dyn_mem outside the while loop.Mark Wielaard2022-04-192-1/+5
| | | | | | | The GCC address sanitizer might complain otherwise: stack-use-after-scope src/readelf.c:1787 in get_dyn_ents Signed-off-by: Mark Wielaard <mark@klomp.org>
* readelf: Don't consider padding DT_NULL as dynamic section entryDi Chen2022-04-192-6/+31
| | | | | | | | | | | when using `$ eu-readelf -d {FILE}` to get the number of dynamic section entris, it wrongly counts the padding DT_NULLs as dynamic section entries. However, DT_NULL Marks end of dynamic section. They should not be considered as dynamic section entries. https://sourceware.org/bugzilla/show_bug.cgi?id=28928 Signed-off-by: Di Chen <dichen@redhat.com>
* Introduce error_exit as a noreturn variant of error (EXIT_FAILURE, ...)Mark Wielaard2022-03-3012-288/+250
| | | | | | | | | | | | error (EXIT_FAILURE, ...) should be noreturn but on some systems it isn't. This may cause warnings about code that should not be reachable. So have an explicit error_exit wrapper that is noreturn (because it calls exit explicitly). Use error_exit in all tools under the src directory. https://bugzilla.redhat.com/show_bug.cgi?id=2068692 Signed-off-by: Mark Wielaard <mark@klomp.org>
* elflint: Recognize NT_FDO_PACKAGING_METADATAMark Wielaard2022-03-252-0/+11
| | | | Signed-off-by: Mark Wielaard <mark@klomp.org>
* addr2line: Make --absolute the default, add --relative option.Mark Wielaard2022-03-142-3/+18
| | | | | | | | | | Make --absolute (including the compilation directory in file names) the default and add a new option --relative to get the previous default behavior. https://www.sourceware.org/bugzilla/show_bug.cgi?id=28951 Signed-off-by: Mark Wielaard <mark@klomp.org>
* readelf: Workaround stringop-truncation errorMark Wielaard2021-12-092-1/+5
| | | | | | | | | | | | | | | | In function ‘strncpy’, inlined from ‘print_ehdr’ at readelf.c:1175:4: error: ‘__builtin_strncpy’ specified bound 512 equals destination size [-Werror=stringop-truncation] strncpy doesn't terminate the copied string if there is not enough room. We compensate later by explicitly adding a zero terminator at buf[sizeof (buf) - 1]. Normally gcc does see this, but with -fsanitize=address there is too much (checking) code in between. But it is actually better to not let strncpy do too much work, so substract one from the size. Signed-off-by: Mark Wielaard <mark@klomp.org>
* libdw, readelf: Read inlining info in NVIDIA extended line mapJohn M Mellor-Crummey2021-11-102-0/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As of CUDA 11.2, NVIDIA added extensions to the line map section of CUDA binaries to represent inlined functions. These extensions include - two new fields in a line table row to represent inline information: context, and functionname, - two new DWARF extended opcodes: DW_LNE_NVIDIA_inlined_call, DW_LNE_NVIDIA_set_function_name, - an additional word in the line table header that indicates the offset in the .debug_str function where the function names for this line table begin, and A line table row for an inlined function contains a non-zero "context" value. The “context” field indicates the index of the line table row that serves as the call site for an inlined context. The "functionname" field in a line table row is only meaningful if the "context" field of the row is non-zero. A meaningful "functionname" field contains an index into the .debug_str section relative to the base offset established in the line table header; the position in the .debug_str section indicates the name of the inlined function. These extensions resemble the proposed DWARF extensions (http://dwarfstd.org/ShowIssue.php?issue=140906.1) by Cary Coutant, but are not identical. This commit integrates support for handling NVIDIA's extended line maps into elfutil's libdw library, by adding two functions dwarf_linecontext and dwarf_linefunctionname, and the readelf --debug-dump=line command line utility. Signed-off-by: John M Mellor-Crummey <johnmc@rice.edu> Signed-off-by: Mark Wielaard <mark@klomp.org>
* elflint.c: Don't dereference databits if badMark Wielaard2021-10-062-1/+5
| | | | | | | | | | | | elflint.c: In function 'check_sections': elflint.c:4105:48: error: null pointer dereference [-Werror=null-dereference] 4105 | idx < databits->d_size && ! bad; | ~~~~~~~~^~~~~~~~ Fix this by testing for ! bad first. Reported-by: Jan-Benedict Glaw <jbglaw@lug-owl.de> Signed-off-by: Mark Wielaard <mark@klomp.org>
* findtextrel: do not use unbound allocaDmitry V. Levin2021-09-093-30/+30
| | | | | | | | This fixes the following compilation warning: findtextrel.c:184:1: warning: stack usage might be unbounded [-Wstack-usage=] Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
* Use xasprintf instead of asprintf followed by error(EXIT_FAILURE)Dmitry V. Levin2021-09-094-23/+21
| | | | Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
* Remove redundant casts of memory allocating functions returning void *Dmitry V. Levin2021-09-096-23/+29
| | | | | | | Return values of functions returning "void *", e.g. calloc, malloc, realloc, xcalloc, xmalloc, and xrealloc, do not need explicit casts. Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
* src: add -Wno-error=stack-usage= to AM_LDFLAGSDmitry V. Levin2021-09-092-1/+5
| | | | | | | | | | While -Wstack-usage= is already excluded from AM_CFLAGS for various tools in src using *_no_Wstack_usage variables, this obviously does not help when LTO is enabled, so add -Wno-error=stack-usage= to AM_LDFLAGS for linking tools in src. References: https://sourceware.org/bugzilla/show_bug.cgi?id=24498 Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
* debuginfod, elfclassify: remove unnecessary header inclusionSaleem Abdulrasool2021-08-272-1/+4
| | | | | | | | | `error.h`'s inclusion was centralised into the `system.h` header. As the implementation currently includes `system.h` already, the inclusion of `error.h` is unnecessary. This prepares for a future portability change to allow elfutil to build with alternate libc implementations. Signed-off-by: Saleem Abdulrasool <abdulras@google.com>
* readelf: Pull advance_pc() in file scopeTimm Bäder2021-07-152-7/+26
| | | | | | | | | Make advance_pc() a static function so we can get rid of another nested function. Rename it to run_advance_pc() and use a local advance_pc() macro to pass all the local variables. This is similar to what the equivalent code in libdw/dwarf_getsrclines.c is doing. Signed-off-by: Timm Bäder <tbaeder@redhat.com>
* readelf: Handle line tables without line number statements correctlyMark Wielaard2021-07-041-1/+1
| | | | | | | | | When we see a line table without line number statements we need to continue with the next table. Add a testcase for this situation. https://sourceware.org/bugzilla/show_bug.cgi?id=28032 Signed-off-by: Mark Wielaard <mark@klomp.org>
* readelf: Fix error message when two attribute names differ in in ↵Mark Wielaard2021-07-032-1/+5
| | | | | | | | | compare_listptr. We were printing the second attribute name twice. Print the first and second. Reported-by: Gabriel Valky <gvalky@tachyum.com> Signed-off-by: Mark Wielaard <mark@klomp.org>
* unstrip: Always check gelf_getrel[a] resultsMark Wielaard2021-07-032-0/+6
| | | | Signed-off-by: Mark Wielaard <mark@klomp.org>
* strip: Always check gelf_update results.Mark Wielaard2021-07-032-4/+14
| | | | Signed-off-by: Mark Wielaard <mark@klomp.org>
* elflint: fix undefined 'buffer_left' referenceSergei Trofimovich2021-06-072-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Link failure is reproducible on gcc-11.1.0 target: ``` $ autoreconf -i -f $ ./configure --enable-maintainer-mode --disable-debuginfod \ --host=x86_64-pc-linux-gnu \ CFLAGS=-march=znver3 \ CXXFLAGS=-march=znver3 \ LDFLAGS=" " $ make CCLD elflint ld: elflint.o: in function `check_attributes': elflint.c:(.text+0xdcff): undefined reference to `buffer_left' ld: elflint.c:(.text+0xe557): undefined reference to `buffer_left' ``` It happens due to possible external linkage of `buffer_left()`. The change forces local linkage to always use local definition (either inline or out-of-line). Reported-by: Toralf Förster Bug: https://bugs.gentoo.org/794601 Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org> Fixes: e95d1fbb ("elflint: Pull left() in file scope") Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>