40 Commits

Author SHA1 Message Date
emaste
fdfcc69d97 nm: Accept long option --extern-only for -g
Submitted by:	jkim
2015-01-08 14:35:16 +00:00
emaste
3c03afd895 libelf: Add arm64 config
Upstream elftoolchain ticket: #470
Submitted by:	Andrew Turner
Sponsored by:	The FreeBSD Foundation
2015-01-07 19:34:44 +00:00
emaste
e016e1f4c6 readelf: Handle note types from different operating systems
Previously elftoolchain readelf(1) produced correct description text
only for Linux note types.

Upstream elftoolchain ticket #473

Differential Revision:	https://reviews.freebsd.org/D1428
Reviewed by:	kib
Sponsored by:	The FreeBSD Foundation
2015-01-05 16:05:15 +00:00
emaste
c2928cca2c addr2line: fflush output after each address lookup
Certain tools spawn addr2line and pass addresses one at a time for
resolution.

PR:		195561
Reported by:	antoine
Sponsored by:	The FreeBSD Foundation
2015-01-05 04:56:38 +00:00
emaste
d0987293c1 readelf: Correct rounding on note padding
In general 64-bit ELF notes use 4-byte padding, not 8, despite what is
claimed in various specs.

Upstream elftoolchain ticket 472
https://sourceforge.net/p/elftoolchain/tickets/472/

Sponsored by:	The FreeBSD Foundation
2015-01-02 20:49:43 +00:00
emaste
07196d1c4a libelf: Return an error instead of asserting on an invalid ar file
Upstream elftoolchain ticket 467
http://sourceforge.net/p/elftoolchain/tickets/467/

Reported by:	Alexander Cherepanov
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation
2015-01-02 02:47:47 +00:00
emaste
904cd98f84 readelf: Add stdint.h for C99 fixed size types
Upstream elftoolchain brings in stdint.h via an ELF header that we
do not use in FreeBSD.

Sponsored by:	The FreeBSD Foundation
2014-12-31 19:21:53 +00:00
emaste
713a7712a6 libelf: Rearrange size test to prevent integer overflow
Sponsored by:	The FreeBSD Foundation
2014-12-31 01:48:23 +00:00
emaste
65848ba793 Check for multiplication integer overflow in CHECK_EHDR
The initial fix in r276374 is valid only for 64-bit objects. Revert it
and return an error in CHECK_EHDR if the multiplication would overflow.

The original buffer overflow issue was found with the security/afl
fuzzer and has upstream elftoolchain ticket 462. The 32-bit object issue
with r276374 found by antoine@ during an i386 exp-run.

Sponsored by:	The FreeBSD Foundation
2014-12-30 22:04:24 +00:00
emaste
89ea455074 Update elftoolchain to upstream rev 3136
This fixes two strip(1) issues found during ports exp-run and adds a
string hash implementation which significantly speeds up certain
operations on objects with large numbers of symbols.

This also improves libdwarf handling for stripped objects with
.eh_frame or .debug_frame (but not other debug) sections.

PR:		196107
Sponsored by:	The FreeBSD Foundation
2014-12-30 03:25:42 +00:00
emaste
62550a1657 libelf: Do not read past end of buffer
Previously a corrupt ELF file could read beyond the end of e_rawfile.

Upstream elftoolchain ticket 462.  Found via the security/afl fuzzer.

Sponsored by:	The FreeBSD Foundation
2014-12-29 20:23:42 +00:00
emaste
39410e980c Rename DT_FEATURE_1 to DT_FEATURE
Track r270303:

  This provides a minor cleanup in elfdump; there are otherwise no
  consumers in the tree.  Old SUN documentation can be found for either
  variant, but GNU binutils switched to DT_FEATURE around 2000.

Sponsored by:	The FreeBSD Foundation
2014-12-29 19:38:12 +00:00
emaste
960eab92ed Restore r276252 mdoc fix
It was accidentally reverted in the elftoolchain update (r276371).

Sponsored by:	The FreeBSD Foundation
2014-12-29 19:27:10 +00:00
emaste
ac70b524c6 Update elftoolchain to upstream rev 3130
This includes a number of libdwarf improvements (particularly DWARF4
related) and updates to elftoolchain tools such as strip(1). It also
includes a large number of miscellaneous fixes (memory leaks, sign and
cast warnings, integer overflow and underflow, etc.).

This is a merge of r276167,276170-276172 from the
projects/elftoolchain-update-r3130 branch.

Sponsored by:	The FreeBSD Foundation
2014-12-29 19:16:40 +00:00
bapt
d221e0d05d mdoc fixes 2014-12-26 20:50:40 +00:00
bapt
56dcb111b5 mdoc fixes 2014-12-26 20:49:23 +00:00
emaste
46be049bf4 Update elftoolchain to upstream rev 3130
This brings a number of fixes to elfcopy/strip and DWARF4 improvements.

Sponsored by:	The FreeBSD Foundation
2014-12-24 03:13:16 +00:00
emaste
6e6cdef959 Add AArch64 machine time and relocations for readelf
Reviewed by:	andrew
Sponsored by:	The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D1333
2014-12-22 16:34:59 +00:00
emaste
7740946485 Set up default shstrtab entries at shstrtab initialization
Instead of waiting until the addition of the first non-default entry.
This fixes a segfault when strip(1) is asked to remove every section from
an object file.

Upstream elftoolchain ticket 463

Reviewed by:	imp
Sponsored by:	The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D1341
2014-12-22 16:31:09 +00:00
emaste
c39f1f3223 Include section name in strip warning message 2014-12-18 19:09:59 +00:00
emaste
df55c61fa5 Do not strip all when stripping an explicit symbol
When requested to strip specific symbols (-N flag) the default should be
to strip nothing (other than the requested symbols). This is consistent
with binutils strip(1).

PR:		196038
Reviewed by:	imp
Sponsored by:	The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D1327
2014-12-17 14:46:21 +00:00
emaste
38975df013 Copy elftoolchain readelf from vendor branch 2014-12-16 16:23:54 +00:00
emaste
50872743f9 Correct elftoolchain strip(1) memory size calculation
Calculate the segment's memory size (p_memsz) using the virtual
addresses, not the file offsets. Otherwise padding preceeding SHT_NOBITS
sections may be excluded from the calculation, resulting in a segment
that is too small.

PR:		195653
Sponsored by:	The FreeBSD Foundation
2014-12-15 18:18:57 +00:00
emaste
4117e1b259 libelf: Fix cross-endian ELF note file / memory conversion
The namesz and descsz variables need to be used in native endianness.
The sizes are in native order after swapping in the file to memory case,
and before swapping in the memory to file case.

This issue was identified for r273443, but the change was applied to the
wrong case. Revert r273443 to fix the to-memory case, and apply the
equivalent change to the to-file case.

Sponsored by:	DARPA, AFRL
Reviewed by:	adrian, brooks, marcel
Differential Revision: https://reviews.freebsd.org/D1257
2014-12-02 22:35:43 +00:00
emaste
5433f2d015 Track libarchive API change 2014-12-01 16:10:44 +00:00
emaste
c145669b3e Temporarily disable non-FreeBSD NT_ note types 2014-12-01 16:10:03 +00:00
emaste
a3eff01c3a Fix elftoolchain tools in-tree build
* make variables static
 * add header for uint*_t typedefs
2014-12-01 16:07:31 +00:00
emaste
b09a2340ee Copy elftoolchain binutils replacements from vendor branch
Sponsored by:	The FreeBSD Foundation
2014-11-27 20:12:13 +00:00
marcel
3d0d095b21 Fix the conversion macro for .note sections, broken in the case
the ELF file's byte order is not the native byte order.  The
bug is that the variables holding the name and description size
are used (natively) after having been byte-swapped.  The fix is
to calculate sz from them just prior to byte-swapping.

Approved by:	jkoshy@
Obtained from:	Juniper Networks, Inc.
2014-10-22 01:04:16 +00:00
marcel
76382aeb89 GCC for PowerPC does not align .note sections to 4 bytes. When
running ctfmerge on its objects, libelf asserts as it expects
.note sections to be 4-byte aligned.  Change that expectation.

Approved by:	jkoshy@
Obtained from:	Juniper Networks, Inc.
2014-10-22 00:58:50 +00:00
kaiw
236d76c86d Reapply r221569, r233401, r233524 and r255105: Add support for a few
ARM/MIPS ELF section types in _libelf_xlate_shtype().
2014-01-25 13:53:46 +00:00
kaiw
6eb9c645de Remove trailing whitespace. 2014-01-21 20:17:10 +00:00
kaiw
f87e56cfe0 * Allow API dwarf_loclist_n() and dwarf_loclist() to be called with
attributes that have form DW_FORM_sec_offset.
* If the .debug_info section conforms to DWARF4, do not allow the value
  of attributes with form DW_FORM_data[48] to be used as section
  offset.
2014-01-19 13:42:49 +00:00
kaiw
da160d852b Add a sanity check: The provided offset for the desired location list
should not exceed the size of the .debug_loc section.
2014-01-19 13:38:40 +00:00
kaiw
80ef55c0ac API dwarf_attrval_flag() should properly handle an attribute with
(DWARF4) form DW_FORM_flag_present which implicitly indicates the
presence of the attribute. Manual page is updated to reflect this
change.

Note that this was previously fixed in the old libdwarf.
2014-01-18 17:59:22 +00:00
kaiw
de938e3f17 Fix typo: the public API dwarf_child() should return DW_DLV_NO_ENTRY
instead of DW_DLE_NO_ENTRY when a child DIE is not found.
2014-01-18 17:49:32 +00:00
kaiw
3ec8bfd144 Fix a warning in libdwarf found by -Wmissing-variable-declarations. 2014-01-18 17:47:06 +00:00
kaiw
c770f3b535 Apply r241720 by ed:
Fix warnings found by -Wmising-variable-declarations.
2014-01-18 10:13:04 +00:00
kaiw
53f2672ff7 Use FreeBSD's ELF headers instead of the elfdefinitions.h header which
comes with elftoolchain. This version of libelf doesn't need to be
portable; using FreeBSD's own ELF headers will avoid conflicts and
make integration easier.
2014-01-16 21:47:27 +00:00
kaiw
7f3a50b3b9 Copy libelf, libdwarf and common files from vendor/ to contrib/. 2014-01-15 22:30:48 +00:00