Revision tags: release/14.0.0, release/13.2.0, release/12.4.0, release/13.1.0, release/12.3.0, release/13.0.0, release/12.2.0, release/11.4.0, release/12.1.0, release/11.3.0 |
|
#
ae500c1f |
| 10-Jan-2019 |
Ed Maste <emaste@FreeBSD.org> |
Update to ELF Tool Chain r3668
Highlights: - Make sure that only TLS sections are sorted into TLS segment. - Fixed multiple errors in "Section to Segment mapping". - Man page updates - ar improvemen
Update to ELF Tool Chain r3668
Highlights: - Make sure that only TLS sections are sorted into TLS segment. - Fixed multiple errors in "Section to Segment mapping". - Man page updates - ar improvements - elfcopy: avoid filter_reloc uninitialized variable for rela - elfcopy: avoid stripping relocations from static binaries - readelf: avoid printing directory in front of absolute path - readelf: add NT_FREEBSD_FEATURE_CTL FreeBSD note type - test improvements
NOTES:
Some of these changes originated in FreeBSD and simply reduce diffs between contrib and vendor.
ELF Tool Chain ar is not (currently) used in FreeBSD, and there are improvements in both FreeBSD and ELF Tool Chain ar that are not in the other.
Sponsored by: The FreeBSD Foundation
show more ...
|
Revision tags: release/12.0.0 |
|
#
3af64f03 |
| 11-Sep-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r338392 through r338594.
|
#
eb81f38a |
| 05-Sep-2018 |
John Baldwin <jhb@FreeBSD.org> |
Fix objcopy for little-endian MIPS64 objects.
MIPS64 does not store the 'r_info' field of a relocation table entry as a 64-bit value consisting of a 32-bit symbol index in the high 32 bits and a 32-
Fix objcopy for little-endian MIPS64 objects.
MIPS64 does not store the 'r_info' field of a relocation table entry as a 64-bit value consisting of a 32-bit symbol index in the high 32 bits and a 32-bit type in the low 32 bits as on other architectures. Instead, the 64-bit 'r_info' field is really a 32-bit symbol index followed by four individual byte type fields. For big-endian MIPS64, treating this as a 64-bit integer happens to be compatible with the layout expected by other architectures (symbol index in upper 32-bits of resulting "native" 64-bit integer). However, for little-endian MIPS64 the parsed 64-bit integer contains the symbol index in the low 32 bits and the 4 individual byte type fields in the upper 32-bits (but as if the upper 32-bits were byte-swapped).
To cope, add two helper routines in gelf_getrel.c to translate between the correct native 'r_info' value and the value obtained after the normal byte-swap translation. Use these routines in gelf_getrel(), gelf_getrela(), gelf_update_rel(), and gelf_update_rela(). This fixes 'readelf -r' on little-endian MIPS64 objects which was previously decoding incorrect relocations as well as 'objcopy: invalid symbox index' warnings from objcopy when extracting debug symbols from kernel modules.
Even with this fixed, objcopy was still crashing when trying to extract debug symbols from little-endian MIPS64 modules. The workaround in gelf_*rel*() depends on the current ELF object having a valid ELF header so that the 'e_machine' field can be compared against EM_MIPS. objcopy was parsing the relocation entries to possibly rewrite the 'r_info' fields in the update_relocs() function before writing the initial ELF header to the destination object file. Move the initial write of the ELF header earlier before copy_contents() so that update_relocs() uses the correct symbol index values.
Note that this change should really go upstream. The binutils readelf source has a similar hack for MIPS64EL though I implemented this version from scratch using the MIPS64 ABI PDF as a reference.
Discussed with: jkoshy Reviewed by: emaste, imp Approved by: re (gjb, kib) MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D15734
show more ...
|
Revision tags: release/11.2.0 |
|
#
715d1396 |
| 27-Apr-2018 |
Ed Maste <emaste@FreeBSD.org> |
Update ELF Tool Chain to r3614
MFC after: 1 week Relnotes: Yes Sponsored by: The FreeBSD Foundation
|
Revision tags: release/10.4.0, release/11.1.0, release/11.0.1, release/11.0.0, release/10.3.0, release/10.2.0, release/10.1.0, release/9.3.0 |
|
#
6cec9cad |
| 03-Jun-2014 |
Peter Grehan <grehan@FreeBSD.org> |
MFC @ r266724
An SVM update will follow this.
|
#
3b8f0845 |
| 28-Apr-2014 |
Simon J. Gerraty <sjg@FreeBSD.org> |
Merge head
|
#
84e51a1b |
| 23-Apr-2014 |
Alan Somers <asomers@FreeBSD.org> |
IFC @264767
|
#
c98bb15d |
| 21-Feb-2014 |
Glen Barber <gjb@FreeBSD.org> |
MFH: tracking commit
Sponsored by: The FreeBSD Foundation
|
#
5748b897 |
| 19-Feb-2014 |
Martin Matuska <mm@FreeBSD.org> |
Merge head up to r262222 (last merge was incomplete).
|
#
699d0f09 |
| 28-Jan-2014 |
Kai Wang <kaiw@FreeBSD.org> |
Merge from projects/elftoolchain: Upgrade libelf and libdwarf to newer versions from elftoolchain upstream (r2974). Convert ctfconvert to use the APIs from the new libdwarf and make ctfconvert work
Merge from projects/elftoolchain: Upgrade libelf and libdwarf to newer versions from elftoolchain upstream (r2974). Convert ctfconvert to use the APIs from the new libdwarf and make ctfconvert work with Clang 3.4.
__FreeBSD_version is bumped to 1100006.
A list of notable changes:
[libelf]
* The old libelf source code in lib/libelf has been removed. Instead, the new libelf is built from contrib/elftoolchain/libelf. * Manual pages are largely improved. * Internal implementation was refactored and improved for better correctness and portability. * Fixed a few memory leaks. * Extended with extension APIs `elf_open()` and `elf_openmemory()`. These APIs are similar to `elf_begin()` and `elf_memory()` respectively, except that they return an ELF descriptor of kind `ELF_K_NONE` instead of an error if the object being opened could not be parsed. * Implement support for translating sections of type ELF_T_VDEF and ELF_T_VNEED. * Improve `elf_update()` to check that the executable header, the program header table, section contents and the section header table do not overlap, and to ensure that gaps between extents are filled with the fill character specified by `elf_fill()`. * Allow `Elf_Data` descriptors to have types and alignments differing from their containing section. * Remove functionality controlled by `LIBELF_TEST_HOOKS`. * Support processing of BSD-flavor archives. * Add knowledge of section types `SHT_GNU_ATTRIBUTES` and `SHT_GNU_LIBLIST`. * Use elftoolchain style symbol versioning. * Shared library version is bumped.
[libdwarf]
* The old libdwarf source code in lib/libdwarf has been removed. Instead, the new libdwarf is built from contrib/elftoolchain/libdwarf. * Support full DWARF3 and partial DWARF4 parsing. * Support DWARF2 generation. * Support for DWARF line number, call frame, location expression, macro info and address ranges, among other things. * The APIs for the new libdwarf are mostly compatible with the widely used LGPL libdwarf. Some of the incompatible APIs from the old libdwarf are kept as its own extensions. All the APIs are documented. * Use elftoolchain style symbol versioning. * Shared library version is bumped.
[ctfconvert]
* Switch to the APIs from the new libdwarf. * Improve die_mem_offset() so that DW_AT_data_member_location attributes generated by Clang 3.4 can be handled properly. * Make use of DW_AT_byte_size attribute of the member DIE to calculate the bits occupied by the member's type, without actually resolving the type. This way ctfconvert can deal with the case that Clang 3.4 sometimes emits DIE for struct/union member before emitting the DIE for the type of that member.
Obtained from: elftoolchain No objection: -toolchain mailing list
show more ...
|
Revision tags: release/10.0.0 |
|
#
2de3b87a |
| 15-Jan-2014 |
Kai Wang <kaiw@FreeBSD.org> |
Copy libelf, libdwarf and common files from vendor/ to contrib/.
|