blob: dde6c81df3ca545598241b87e96315d26b3eb7b0 [file] [log] [blame]
2019-06-18 Mark Wielaard <>
* common.h (allocate_elf): Use int64_t instead of off_t for offset.
* elf32_newphdr.c (newphdr): Document why Elf32/64_Word is correct.
* elf32_updatefile.c (fill): Use int64_t instead of off_t for pos.
(updatefile): Define last_offset, shdr_offset and scn_start as
int64_t instead of off_t.
* elf32_updatenull.c: Define Elf32_SizeWord and Elf64_SizeWord.
(updatenull_wrlock): Return int64_t instead of off_t. Define size,
sh_entsize, sh_align and sh_size as SizeWords. Define offset as
int64_t. Cast data->d_off to SizeWord instead of GElf_Word. Drop
size GElf_Word cast. Cast offset to SizeWord instead of GElf_Word
when comparing with sh_size.
* elf_begin.c (get_shnum): Define offset as int64_t instead of
off_t. Document why use GElf_Word is correct.
(file_read_elf): Define offset as int64_t instead of off_t.
(__libelf_read_mmaped_file): Likewise.
(read_unmmaped_file): Likewise.
(read_file): Likewise.
* elf_getaroff.c (elf_getaroff): Return int64_t.
* elf_getbase.c (elf_getbase): Likewise.
* elf_getdata_rawchunk.c (elf_getdata_rawchunk): Define offset as
int64_t instead of off_t.
* elf_update.c (write_file): Return int64_t instead of off_t,
define size as int64_t instead of off_t.
(elf_update): Likewise.
* libelfP.h (struct Elf): Define start_offset, sizestr_offset and
offset as int64_t.
(__libelf_read_mmaped_file): Define offset as int64_t.
(__elf32_updatenull_wrlock): Return int64_t.
(__elf64_updatenull_wrlock): Return int64_t.
2019-05-12 Mark Wielaard <>
* elf32_updatenull.c (updatenull_wrlock): Mark shdr_flags dirty if
either offset or size changed.
2019-05-01 Mark Wielaard <>
* gelf_getnote.c (gelf_getnote): Check n_namesz doesn't overflow
2019-04-30 Mark Wielaard <>
* note_xlate.h (elf_cvt_note): Indicate we only translated the note
header if we ran out of data by updating len, src and dest.
2019-04-01 Mao Han <>
* elf.h: Update from glibc.
2019-03-07 Mark Wielaard <>
* elf32_updatefile.c (updatemmap): Use posix_memalign instead of
2019-03-06 Mark Wielaard <>
* elf32_updatefile.c (updatemmap): Free scns before returning
allocation failure.
2019-02-24 Mark Wielaard <>
* gelf_xlate.c (__elf_xfctstof): Remove alias.
* libelfP.h (__elf_xfctstof): Remove definition.
2019-02-24 Mark Wielaard <>
* elf32_fsize.c (local_strong_alias): Remove definition.
(msize): Remove alias.
* libelfP.h (__elf32_msize): Remove definition.
(__elf64_msize): Likewise.
2019-02-21 Mark Wielaard <>
* common.h (determine_kind): Only accept EV_CURRENT.
* elf32_fsize.c (fsize): Just check version is EV_CURRENT.
Use __libelf_type_size without version dimension.
* elf32_updatefile.c (updatemmap): Define fctp from __elf_xfctstom
without version dimension.
(updatefile): Likewise.
* elf32_updatenull.c (default_ehdr): Check e_version is EV_CURRENT.
(updatenull_wrlock): Check d_version is EV_CURRENT.
(elf32_xlatetof): Likewise. And get recsize without version
dimension from __elf_xfctstom.
(elf32_xlatetom): Likewise.
* elf_begin.c (elf_begin): Check __libelf_version is EV_CURRENT.
* elf_compress.c (__libelf_reset_rawdata): Set d_version to
* elf_getdata.c (shtype_map): Remove version dimension.
(__libelf_type_aligns): Likewise.
(__libelf_data_type): Use shtype_map without version dimension.
(convert_data): Remove unused version argument. Get fp from
__elf_xfctstom without version dimensions.
(__libelf_set_data_list_rdlock): Call convert_data without version.
* elf_getdata_rawchunk.c (elf_getdata_rawchunk): Call __elfcfctstom
conversion function without version dimensions. Set d_version to
* elf_newdata.c (elf_newdata): Set d_version to EV_CURRENT.
* elf_version.c (__libelf_version_initialized): Removed.
(__libelf_version): Initialized to EV_NONE.
(elf_version): Always return EV_CURRENT for EV_NONE version.
Only accept (and return) EV_CURRENT as version.
* gelf_fsize.c (__libelf_type_sizes): Remove version dimension.
(gelf_fsize): Only accept EV_CURRENT as version.
Use __libelf_type_sizes without version dimension.
* gelf_xlate.c (__elf_xftstom): Remove version dimensions.
* libelfP.h (__elf_xfctstom): Defined without version dimensions.
(__elf_xfctstof): Likewise.
(__libelf_type_sizes): Define without version dimension.
(elf_typesize): Define using __libelf_type_sizes without version
(__libelf_version_initialized): Remove definition.
(__libelf_version): Add definition.
(LIBELF_EV_IDX): Removed define.
(__libelf_type_aligns): Remove version dimension.
* nlist.c (nlist): Call elf_version unconditionally.
2019-02-19 Mark Wielaard <>
* elf_compress.c (do_deflate_cleanup): Remove ei_data argument,
check cdatap is not NULL before calling free.
(deflate_cleanup): Add cdata as argument.
(__libelf_compress): Also check whether the d_size is not zero
before converting data. Call deflate_cleanup with an extra
argument depending on whether there is converted data to free.
Always allocate allocate at least one byte for buf_out.
2019-02-14 Mark Wielaard <>
* elf_begin.c (read_long_names): Make sure ar_size is properly
terminated. Sanity check len early if we can.
2019-01-18 Mark Wielaard <>
* (INSTALL_ELFH): Add elf.h to include_HEADERS when
defined, otherwise (the default) add elf.h to noinst_HEADERS.
2019-01-16 Mark Wielaard <>
* note_xlate.h (elf_cvt_note): Check n_namesz and n_descsz don't
overflow note_len into note header.
2018-11-17 Mark Wielaard <>
* elf32_updatefile.c (updatemmap): Make sure to call convert
function on a properly aligned destination.
2018-11-16 Mark Wielaard <>
* libebl.h (__elf32_msize): Mark with const attribute.
(__elf64_msize): Likewise.
2018-11-13 Mark Wielaard <>
* elf_getdata.c (__libelf_set_rawdata_wrlock): Explicitly set the
alignment of SHF_COMPRESSED data to the alignment of ELF_T_CHDR.
* elf_compress.c (elf_compress): After compression set sh_addralign
to the alignment of ELF_T_CHDR.
2018-11-09 Mark Wielaard <>
* elf_compress_gnu.c (elf_compress_gnu): Use elf_getdata.
2018-11-12 Mark Wielaard <>
* elf-knowledge.c (ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX): New define.
PIC,SHORT_ENUM}): Likewise.
2018-11-09 Mark Wielaard <>
* elf_compress.c (__libelf_reset_rawdata): Make rawdata change
explicit by calling __libelf_set_data_list.
* elf_getdata.c (convert_data): Don't convert if type is ELF_T_BYTE
even if endianness is different.
2018-10-18 Mark Wielaard <>
* libelf.h (Elf_Type): Add ELF_T_NHDR8.
* libelfP.h (__libelf_data_type): Add align argument.
(NOTE_ALIGN): Split into...
(NOTE_ALIGN4): ... and ...
(NOTE_ALIGN8): this.
* elf32_xlatetom.c (xlatetom): Recognize both ELF_T_NHDR and
* elf_compress.c (elf_compress): Pass zdata_align to
* elf_compress_gnu.c (elf_compress_gnu): Pass sh_addralign to
* elf_getdata.c (shtype_map): Add ELF_T_NHDR8.
(__libelf_data_type): Take align as extra argument, use it to
determine Elf_Type.
(__libelf_set_rawdata_wrlock): Recognize ELF_T_NHDR8. Pass align to
* gelf_fsize.c (__libelf_type_sizes): Add ELF_T_NHDR8.
* gelf_getnote.c (gelf_getnote): Use Elf_Type of Elf_Data to calculate
* gelf_xlate.c (__elf_xfctstom): Set ELF_T_NHDR to elf_cvt_note4,
add ELF_T_NHDR8.
* note_xlate.h (elf_cvt_note): Take nhdr8 argument and use it to
determine padding.
(elf_cvt_note4): New function.
(elf_cvt_note8): Likewise.
2018-09-13 Mark Wielaard <>
* elf32_updatefile.c (updatemmap): Use shnum, not ehdr->e_shnum.
* elf_getscn.c (elf_getscn): Create section zero if it is requested,
but doesn't exist yet.
2018-09-12 Mark Wielaard <>
* elf32_updatefile.c (updatemmap): Use memmove, not memcpy.
* elf_update.c (write_file): Try to mremap if file needs to be
2018-08-18 Mark Wielaard <>
* libelf.h (elf_compress_gnu): Add documentation about
interaction between SHF_COMPRESED and elf_compress_gnu.
* elf_compress_gnu.c (elf_compress_gnu): Return error if section
sh_flags has SHF_COMPRESSED set.
2018-07-27 Mark Wielaard <>
* libelf.h (elf_getshdrstrndx): Fix documentation.
(elf_getshstrndx): Likewise.
2018-06-19 Mark Wielaard <>
* libelfP.h (__libelf_type_align): Remove !ALLOW_UNALIGNED guard.
* elf_getdata.c (__libelf_type_aligns): Likewise.
(convert_data): Remove ALLOW_UNALIGNED check.
* elf_getdata_rawchunk.c (elf_getdata_rawchunk): Likewise.
2018-06-21 Mark Wielaard <>
* elf.h: Update from glibc.
2018-04-19 Andreas Schwab <>
* elf.h: Update from glibc.
2018-02-16 Mark Wielaard <>
* elf.h: Update from glibc.
2018-02-09 Joshua Watt <>
* elf32_updatenull.c (updatenull_wrlock): Use FALLTHROUGH macro
instead of comment.
* elf_begin.c (read_unmmaped_file): Likewise.
(elf_begin): Likewise.
* elf_cntl.c (elf_cntl): Likewise.
2017-10-04 Mark Wielaard <>
* elf_begin.c (file_read_elf): Skip sanity checking e_shoff if scncnt
is zero, we won't use it then.
2017-10-04 Mark Wielaard <>
* libelfP.h: Add ELF_E_INVALID_ELF to error values enum.
* elf_error.c (ELF_E_INVALID_ELF_IDX): New define. Use it as value
for ELF_E_INVALID_ELF in msgidx.
* elf_getshdrstrndx.c (elf_getshdrstrndx): Distinquish between pread
failing and not having enough data.
* elf_begin.c (get_shnum): Likewise. Explicitly set libelf errno on
too large value.
(file_read_elf): Make sure to always set libelf errno when returning
NULL. Distinquish between i/o file and elf data errors.
2017-08-18 Ulf Hermann <>
* gelf_xlate.c: Use attribute_packed.
2017-04-27 Ulf Hermann <>
* libelfP.h: Use attribute_hidden.
2017-04-27 Ulf Hermann <>
* Use fpic_CFLAGS and dso_LDFLAGS.
2017-08-15 Mark Wielaard <>
* elf.h: Update from glibc. Add new powerpc note descriptors.
2017-07-19 Gustavo Romero <>
* elf.h: Add known type in notes segment descriptor for HTM SPRs.
2017-02-17 Ulf hermann <>
* Add libelf_so_DEPS, which include libeu.a,
(libelf_so_LDLIBS): Add $(libelf_so_DEPS).
($(EXEEXT): Use $(libelf_so_LIBS), require
from the right directory.
2017-04-20 Ulf Hermann <>
* libelfP.h: Don't include config.h.
2017-04-20 Ulf Hermann <>
* elf_begin.c: Use F_GETFD rather than F_GETFL.
2017-04-20 Ulf Hermann <>
* libelf.h: Define macros for various function attributes and use
2017-04-20 Ulf Hermann <>
* elf_update.c: Set ELF_F_MMAPPED flag if we mmap from elf_update.
2017-04-19 Mark Wielaard <>
* elf_getarsym.c (elf_getarsym): Initialize n to zero.
2017-03-27 Mark Wielaard <>
* elf32_updatefile.c (updatemmap): Always update last_positition.
(updatefile): Likewise.
2017-03-24 Mark Wielaard <>
* elf_compress.c (__libelf_decompress): Check insane compression
ratios before trying to allocate output buffer.
2016-10-11 Akihiko Odaki <>
Mark Wielaard <>
* gelf.h (gelf_newehdr): Change return type to void *.
(gelf_newphdr): Likewise.
* gelf_newehdr.c (gelf_newehdr): Likewise.
* gelf_newphdr.c (gelf_newphdr): Likewise.
2016-10-21 Mark Wielaard <>
* elf_getdata.c (__libelf_set_rawdata_wrlock): Sanity check
offset and size before trying to malloc and read data.
2016-10-26 Mark Wielaard <>
* elf_begin.c (read_file): Always set maxsize when parent == NULL.
2016-10-11 Akihiko Odaki <>
* elf_getarsym.c (elf_getarsym): Open code rawmemchr when not
* elf_strptr.c: Include stdbool.h.
(validate_str): New function.
(elf_strptr): Use validate_str instead of memrchr.
2016-10-11 Akihiko Odaki <>
* elf32_updatefile.c: Remove sys/param.h include.
* elf32_updatenull.c: Likewise. Add system.h include.
* elf_begin.c: Remove sys/param.h.
* elf_compress: Likewise. Add system.h include.
(MAX): Remove definition.
2016-08-07 Mark Wielaard <>
* elf_compress.c (__libelf_reset_rawdata): Check scn->flags and
free rawdata_base when malloced. Set ELF_F_MALLOCED for scn->flags.
* elf_end.c (elf_end): Check scn->flags and free rawdata_base if
* libelfP.h (struct Elf_Scn): Document flags ELF_F_MALLOCED usage.
2016-07-06 Mark Wielaard <>
* elf-knowledge.h (SH_FLAGS_COMBINE): Removed.
2016-07-06 Mark Wielaard <>
* elf32_updatenull.c (updatenull_wrlock): Ignore e_type when
updating phdrs.
* elf_getphdrnum.c (__elf_getphdrnum_chk_rdlock): Only do sanity
checking if phdrs haven't been read in yet.
2016-06-24 John Ogness <>
* elf32_updatenull.c (updatenull_wrlock): Find first section.
* elf_nextscn.c (elf_nextscn): When scn is NULL start from 0th
2016-06-28 Richard Henderson <>
* elf.h: Update from glibc. Add lots of new EM_* definitions.
2016-04-14 Mark Wielaard <>
* elf_compress.c (__libelf_compress): Free out_buf if deflateInit
2016-02-13 Mark Wielaard <>
* elf32_updatefile.c (updatemmap): Free scns when out of memory.
2016-01-28 Mark Wielaard <>
* elf.h: Update from glibc. Add new i386 and x86_64 relocations.
2016-02-12 Mark Wielaard <>
* elf.h: Update from glibc. Add NT_ARM_SYSTEM_CALL.
2016-02-04 Mark Wielaard <>
* elf_getdata.c (__libelf_set_rawdata_wrlock): Don't adjust align
for SHT_NOBITS sections.
2016-01-22 Chih-Hung Hsieh <>
* elf_compress.c (__libelf_compress): Move nested function
'do_deflate_cleanup' to file scope to compile with clang.
* elf_strptr.c (elf_strptr): Move nested function 'get_zdata'
to file scope to compile with clang.
2016-01-13 Mark Wielaard <>
* libelf.h: Check SHF_COMPRESSED is defined. If not define it and the
associated ELF compression types/defines.
2015-11-26 Mark Wielaard <>
* elf_compress.c (__libelf_decompress_elf): New function, extracted
(elf_compress): here. Check zdata_base use __libelf_decompress_elf.
* elf_strptr.c (elf_strptr): If SHF_COMPRESSED check, uncompress and
use zdata.
* libelfP.h (struct Elf_Scn): Add zdata_size and zdata_align.
(__libelf_decompress_elf): New internal function definition.
2015-10-21 Mark Wielaard <>
* (libelf_a_SOURCES): Add elf_compress.c and
* elf_compress.c: New file.
* elf_compress_gnu.c: Likewise.
* elf_begin.c (file_read_elf): Make a writable copy of the shdrs
* elf_end.c (elf_end): Free zdata_base.
* elf_error.c: Add ELF_E_ALREADY_COMPRESSED,
* elf_data.c (__libelf_data_type): New internal function extracted
from convert_data.
(convert_data): Handle SHF_COMPRESSED.
* elf32_updatenull.c (updatenull_wrlock): Check sh_entsize against
uncompressed section data size if SHF_COMPRESSED.
* elf32_getshdr.c (load_shdr_wrlock): Adjust assert to account for
* libelf.h: Define elf_compress and elf_compress_gnu.
* (ELFUTILS_1.7): Add elf_compress and elf_compress_gnu.
ELF_E_DECOMPRESS_ERROR. Define __libelf_data_type.
(__libelf_compress): New internal function definition.
(__libelf_decompress): Likewise.
(__libelf_reset_rawdata): Likewise.
(__libelf_data_type): Likewise.
(struct Elf_Scn): Add zdata_base.
2015-11-19 Mark Wielaard <>
* (libelf_a_SOURCES): Add elf32_getchdr.c,
elf64_getchdr.c and gelf_getchdr.c.
(noinst_HEADERS): Add chdr_xlate.h.
* abstract.h: Define Chdr32 and Chdr64.
* chdr_xlate.h: New file.
* elf32_getchdr.c: New file.
* elf64_getchdr.c: New file.
* elf_getdata.c (__libelf_set_rawdata_wrlock): Set d_type to
* exttypes.h: Add Chdr32 and Chdr64.
* gelf.h (GElf_Chdr): New typedef.
(gelf_getchdr): New function definition.
* gelf_fsize.c (__libelf_type_sizes): Add ELF_T_CHDR.
* gelf_getchdr.c: New file.
* gelf_xlate.c (__elf_xfctstom): Add ELF_T_CHDR cvt_chdr.
* gelf_xlate.h: Add Chdr.
* libelf.h (Elf_Type): Add ELF_T_CHDR.
(elf32_getchdr): New function definition.
(elf64_getchdr): Likewise.
* (ELFUTILS_1.7): New sections add elf32_getchdr,
elf64_getchdr and gelf_getchdr.
2015-10-16 Mark Wielaard <>
* (libelf_so_LDLIBS): Add -lz.
2015-10-14 Mark Wielaard <>
* elf.h: Update from glibc. Add section compression constants and
2015-10-20 Jose E. Marchesi <>
* elf_begin.c (get_shnum): Elf64_Shdr.sh_size is an Elf64_Xword.
Fix the size argument to pread_retry.
2015-10-13 Chih-Hung Hsieh <>
* elf32_updatefile.c (__elfw2(LIBELFBITS,updatemmap)): Move nested
function 'fill_mmap' to file scope.
* elf_begin.c (elf_begin): Move nested function 'lock_dup_elf'
to file scope.
2015-10-09 Josh Stone <>
* libelf.h: Replace loff_t with int64_t throughout.
2015-10-05 Mark Wielaard <>
* elf_update.c (write_file): Only use posix_fallocate when using
mmap. Only report failure when errno is ENOSPC.
2015-10-09 Josh Stone <>
* libelfP.h (struct Elf): Replace off64_t with off_t.
* elf_getdata_rawchunk.c (elf_getdata_rawchunk): Likewise.
2015-10-05 Chih-Hung Hsieh <>
* elf_getarsym.c (elf_getarsym): Do not use
union of variable length arrays.
2015-10-05 Josh Stone <>
* ( Add AM_V_CCLD and AM_V_at silencers.
2015-09-24 Jose E. Marchesi <>
* (AM_CFLAGS): Use -fPIC instead of -fpic to avoid
relocation overflows in some platforms.
2015-09-29 Mark Wielaard <>
* elf32_updatenull.c (default_ehdr): Set e_version when EV_NONE.
(updatenull_wrlock): Always set e_shentsize.
2015-09-23 Mark Wielaard <>
* elf32_getehdr.c (getehdr_wrlock): Mark as internal_function.
* elf32_getshdr.c (getshdr_rdlock): Likewise.
(getshdr_wrlock): Likewise.
* elf_error.c (__libelf_seterrno): Likewise.
* elf_getphdrnum.c (__elf_getphdrnum_rdlock): Likewise.
(__elf_getphdrnum_chk_rdlock): Likewise.
* elf_getshdrnum.c (__elf_getphdrnum_rdlock): Likewise.
(__elf_getphdrnum_chk_rdlock): Likewise.
* elf_getshdrnum.c (__elf_getshdrnum_rdlock): Likewise.
* elf_readall.c (__libelf_readall): Likewise.
* gelf_getehdr.c (__gelf_getehdr_rdlock): Likewise.
2015-09-22 Mark Wielaard <>
* *.c: Remove old-style function definitions.
2015-06-22 Mark Wielaard <>
* dl-hash.h: Update from glibc.
2015-06-18 Mark Wielaard <>
* elf32_updatefile.c (updatefile): Always free shdr_data and scns
when allocated on failure paths.
2015-06-18 Mark Wielaard <>
* nlist.c (nlist): Check symscn shdr exists before use.
2015-06-16 Mark Wielaard <>
* elf_update.c (write_file): Always also use ftruncate before
posix_fallocate to make sure file has the right size.
2015-06-04 Mark Wielaard <>
* elf_getdata.c (__libelf_type_aligns): Add entries for ELF_T_EHDR,
* elf_getdata_rawchunk.c (elf_getdata_rawchunk): Check alignment
of rawdata against requested type.
2015-06-02 Mark Wielaard <>
* elf_getdata.c (convert_data): Make sure source data is properly
aligned for type before calling actual conversion function.
2015-06-04 Mark Wielaard <>
* elf_begin.c (get_shnum): Check alignment of Shdr, not Ehdr before
direct access.
2015-06-02 Mark Wielaard <>
* elf_begin.c (file_read_elf): Split checks for ehdr and shdr
alignment, drop phdr alignment check.
2015-05-31 Mark Wielaard <>
* elf32_getshdr.c (load_shdr_wrlock): Allocate shdrs with malloc,
not alloca and free after conversion when a copy needs to be made.
2015-05-31 Mark Wielaard <>
* elf32_getphdr.c (getphdr_wrlock): Allocate phdrs with malloc, not
alloca and free after conversion when a copy needs to be made.
2015-05-31 Mark Wielaard <>
* elf_getarsym.c (elf_getarsym): Allocate temporary file_date with
malloc, not alloca also in !ALLOW_UNALIGNED case.
2015-05-30 Mark Wielaard <>
* gelf_xlate.c (elf_cvt_Byte): Only call memmove with non-zero size.
2015-05-30 Mark Wielaard <>
* elf32_updatefile.c (updatemmap): Only call mempcpy and update
last_position when d_size is non-zero.
2015-05-17 Mark Wielaard <>
* elf32_updatefile.c (updatefile): Allocate shdr_data and scns
with malloc, not alloca. Free after writing section headers.
2015-05-16 Mark Wielaard <>
* elf32_updatefile.c (updatemmap): Allocate temporary shdr storage
with malloc, not alloca. Free after writing section header.
2015-05-16 Mark Wielaard <>
* elf_getarsym.c (elf_getarsym): Allocate temporary file_date with
malloc, not alloca. Call free after out.
2015-05-14 Mark Wielaard <>
* elf_update.c (write_file): Use posix_fallocate instead of
ftruncate to extend file if necessary.
2015-05-13 Mark Wielaard <>
* elf32_updatenull.c (default_ehdr): If e_phnum is zero then set
e_phoff also to zero.
2015-05-12 Mark Wielaard <>
* elf32_updatenull.c (updatenull_wrlock): Check that sh_addralign
is a powerof2.
* elf_getdata.c (__libelf_set_rawdata_wrlock): Clamp large d_aligns
to the elf image offset.
2015-05-12 Mark Wielaard <>
* elf32_newphdr.c (newphdr): Call __libelf_seterrno with
ELF_E_INVALID_INDEX before failing. Check whether section zero shdr
actually exists if we need to put extended phnum in section zero.
2015-05-08 Mark Wielaard <>
* nlist.c (nlist): Call gelf_fsize with EV_CURRENT.
2015-01-03 Mark Wielaard <>
* version_xlate.h (elf_cvt_Verdef): Use memmove to copy src to dest.
(elf_cvt_Verneed): Likewise.
2015-03-28 Mark Wielaard <>
* elf.h: Update from glibc.
2015-03-23 Mark Wielaard <>
* elf32_updatenull.c (updatenull_wrlock): Don't extend size with
SHT_NOBITS sh_offset.
2015-02-18 Mark Wielaard <>
* libelfP.h (__libelf_set_data_list_rdlock): Make internal_function.
2015-02-07 Jan Kratochvil <>
* elf32_updatenull.c (__elfw2(LIBELFBITS,updatenull_wrlock)): Consider
sh_addralign 0 as 1.
2015-01-22 Mark Wielaard <>
* elf_strptr (elf_strptr): Make sure returned string is NUL
2015-01-21 Mark Wielaard <>
* elf_strptr.c (elf_strptr): Check data_list_rear == NULL instead
of rawdata_base != NULL before using rawdata directly.
2015-01-20 Mark Wielaard <>
* libelfP.h (__elf_strptr_internal): New function declaration.
* elf_getdata.c (__libelf_set_data_list_rdlock): New internal
function extracted from...
(__elf_getdata_rdlock): ... here.
* elf_newdata.c (elf_newdata): Check scn->rawdata_base and update
datalist if necessary.
2015-01-20 Mark Wielaard <>
* elf_strptr.c (elf_strptr): Call __elf[32|64]_getshdr_rdlock if
2014-12-30 Mark Wielaard <>
* elf_getphdrnum.c (__elf_getphdrnum_chk_rdlock): New function.
(elf_getphdrnum): Call __elf_getphdrnum_chk_rdlock.
* gelf_getphdr (gelf_getphdr): Call __elf_getphdrnum_chk_rdlock
and always check ndx against phnum.
* libelfP.h (__elf_getphdrnum_chk_rdlock): New internal function.
2014-12-25 Mark Wielaard <>
* elf_begin.c (__libelf_next_arhdr_wrlock): ar_size cannot be
negative. Include start_offset in maxsize.
2014-12-28 Alexander Cherepanov <>
* elf_begin.c (read_long_names): Don't miss '/' right after
another '/'. Fixes a dir traversal vuln in ar extraction.
2014-12-18 Ulrich Drepper <>
* Suppress output of textrel_check command.
2014-12-16 Mark Wielaard <>
* elf_begin.c (read_long_names): Make sure long_names len fits
in mapped ELF file.
2014-12-15 Mark Wielaard <>
* elf_getarsym.c (elf_getarsym): Check index_size doesn't overflow.
2014-12-15 Mark Wielaard <>
* elf_begin.c (read_long_names): Clear any garbage left in the
name table.
2014-12-11 Mark Wielaard <>
* elf_begin.c (file_read_elf): Correct ELF64 section offset check.
2014-12-11 Mark Wielaard <>
* elf_begin.c (read_long_names): Check for offset overflow.
(__libelf_next_arhdr_wrlock): Likewise. Sanity check the ar_size.
Don't allow it to go beyond end of file.
2014-12-09 Mark Wielaard <>
* elf_getarsym.c (elf_getarsym): Make sure n * w doesn't overflow.
2014-11-27 Mark Wielaard <>
* ( Use textrel_check.
2014-11-23 Mark Wielaard <>
* elf_getdata_rawchunk.c (elf_getdata_rawchunk): Change signed
overflow check to unsigned.
2014-11-23 Mark Wielaard <>
* note_xlate.h (elf_cvt_note): Copy over any leftover data if
src != dest. The data is probably part of truncated name/desc.
2014-11-22 Mark Wielaard <>
* elf_getphdrnum.c (elf_getphdrnum): Sanity check the
__elf_getphdrnum_rdlock result.
2014-11-18 Mark Wielaard <>
* version_xlate.h (elf_cvt_Verdef): Check for overflow.
(elf_cvt_Verneed): Likewise.
2014-11-17 Mark Wielaard <>
* elf-knowledge.h (SECTION_STRIP_P): Check name is not NULL.
2014-11-16 Mark Wielaard <>
* elf_getshdrstrndx.c: Check there are section headers before
handling SHN_XINDEX.
2014-11-16 Mark Wielaard <>
* elf32_getphdr.c (getphdr_wrlock): Check e_phoff isn't zero.
Check for too many pheaders.
* elf_getphdrnum.c (__elf_getphdrnum_rdlock): Check section zero
actually exists before handling PN_XNUM.
2014-11-16 Mark Wielaard <>
* gelf_getnote.c (gelf_getnote): Check padding overflow.
2014-11-16 Mark Wielaard <>
* elf_getdata.c (__libelf_set_rawdata_wrlock): Declare offset, size
and align as Elf64_Off and Elf64_Xword not size_t.
2014-11-14 Mark Wielaard <>
* gelf_getnote.c (gelf_getnote): Check offset overflow.
2014-11-13 Mark Wielaard <>
* elf_getdata.c (__libelf_set_rawdata_wrlock): Fix unsigned overflow
2014-11-08 Mark Wielaard <>
* elf_begin.c (__libelf_next_arhdr_wrlock): Use mempcpy not __mempcpy.
2014-11-07 Mark Wielaard <>
* elf_begin.c (file_read_elf): Correct sh_size check.
* elf_getdata.c (__libelf_set_rawdata_wrlock): Check for unsigned
2014-09-10 Petr Machata <>
* elf_begin (read_unmmaped_file): Call __libelf_seterrno if the
file is unreadable.
2014-07-07 Mark Wielaard <>
* elf.h: Update from glibc.
2014-04-13 Mark Wielaard <>
* Remove !MUDFLAP conditions.
* elf_begin.c (read_file): Don't clear use_mmap when _MUDFLAP is
* elf_update.c (write_file): Remove _MUDFLAP condition.
2014-01-17 Jakub Jelinek <>
Roland McGrath <>
* libelfP.h (INVALID_NDX): Define.
* gelf_getdyn.c (gelf_getdyn): Use it. Remove ndx < 0 test if any.
* gelf_getlib.c (gelf_getlib): Likewise.
* gelf_getmove.c (gelf_getmove): Likewise.
* gelf_getrel.c (gelf_getrel): Likewise.
* gelf_getrela.c (gelf_getrela): Likewise.
* gelf_getsym.c (gelf_getsym): Likewise.
* gelf_getsyminfo.c (gelf_getsyminfo): Likewise.
* gelf_getsymshndx.c (gelf_getsymshndx): Likewise.
* gelf_getversym.c (gelf_getversym): Likewise.
* gelf_update_dyn.c (gelf_update_dyn): Likewise.
* gelf_update_lib.c (gelf_update_lib): Likewise.
* gelf_update_move.c (gelf_update_move): Likewise.
* gelf_update_rel.c (gelf_update_rel): Likewise.
* gelf_update_rela.c (gelf_update_rela): Likewise.
* gelf_update_sym.c (gelf_update_sym): Likewise.
* gelf_update_syminfo.c (gelf_update_syminfo): Likewise.
* gelf_update_symshndx.c (gelf_update_symshndx): Likewise.
* gelf_update_versym.c (gelf_update_versym): Likewise.
2014-01-17 Jakub Jelinek <>
* elf32_getphdr.c (elfw2(LIBELFBITS,getphdr)): Check if program header
table fits into object's bounds.
* elf_getshdrstrndx.c (elf_getshstrndx): Add elf->start_offset to
elf->map_address. Check if first section header fits into object's
* elf32_getshdr.c (elfw2(LIBELFBITS,getshdr)):
Check if section header table fits into object's bounds.
* elf_begin.c (get_shnum): Ensure section headers fits into
object's bounds.
(file_read_elf): Make sure scncnt is small enough to allocate both
ElfXX_Shdr and Elf_Scn array. Make sure section and program header
tables fit into object's bounds. Avoid memory leak on failure.
* elf_newscn.c (elf_newscn): Check for overflow.
* elf32_updatefile.c (__elfw2(LIBELFBITS,updatemmap)): Likewise.
(__elfw2(LIBELFBITS,updatefile)): Likewise.
* elf32_newphdr.c (elfw2(LIBELFBITS,newphdr)): Likewise.
* elf_getarsym.c (elf_getarsym): Likewise.
2013-11-08 Mark Wielaard <>
* elf32_updatefile.c (elfXX_updatemmap): Only memcpy ehdr when not
already directly mmapped.
2013-11-05 Mark Wielaard <>
* elf32_updatefile.c (elfXX_updatefile): Copy all section headers
if elf->flags dirty.
2013-11-01 Michael Forney <>
2013-10-01 Petr Machata <>
* elf.h: Update from glibc.
2013-06-17 Petr Machata <>
* elf.h: Update from glibc.
2013-08-28 Namhyung Kim <>
* gelf.h (gelf_fsize): Fix typo in comment.
2013-08-28 Mark Wielaard <>
* gelf_getauxv.c (gelf_getauxv): Add missing whitespace.
2013-08-27 Mark Wielaard <>
* gelf_getauxv.c (gelf_getauxv): Remove unnecessary casts to char *.
2013-08-25 Kurt Roeckx <>
* gelf_getauxv.c (gelf_getauxv): Use memcpy instead of pointer
dereference to avoid alignment problems.
2013-01-07 Roland McGrath <>
* elf_getarsym.c (elf_getarsym): Copy FILE_DATA into stack space if it
would be unaligned and !ALLOW_UNALIGNED.
* elf_getarsym.c (read_number_entries): Use memcpy instead of pointer
dereference so as not to assume the field is naturally aligned.
2012-09-17 Petr Machata <>
* elf.h: Update from glibc.
2012-08-16 Roland McGrath <>
* elf.h: Update from glibc.
2012-08-14 Mark Wielaard <>
* elf32_checksum.c (ebl_debugscn_p): Removed unused define and
confusing outdated comment.
2012-08-01 Petr Machata <>
* elf_getarsym (read_number_entries): New function.
(elf_getarsym): Handle 64-bit symbol table, stored in special
entry named "/SYM64/".
* elf_begin.c (__libelf_next_arhdr_wrlock): Don't reject archive
because it contains 64-bit symbol table.
2012-07-19 Mark Wielaard <>
* elf32_getshdr.c (load_shdr_wrlock): Add elf->flags & ELF_F_MALLOCED
to asserts.
2012-07-17 Petr Machata <>
* elf32_xlatetom.c (elfw2(LIBELFBITS, xlatetom)): Do not check for
integer number of records in case of ELF_T_NHDR.
2012-04-02 Mark Wielaard <>
* elf32_offscn.c: Do not match SHT_NOBITS sections at OFFSET unless
there are no nonempty sections at that offset.
2012-03-21 Roland McGrath <>
* elf-knowledge.h (SECTION_STRIP_P): Remove < SHT_NUM check.
2011-02-26 Mark Wielaard <>
* elf_end.c (elf_end): Call rwlock_unlock before rwlock_fini.
2011-01-05 Jan Kratochvil <>
* elf_getdata_rawchunk.c (elf_getdata_rawchunk): Fix off64_t overflow
when MAXIMUM_SIZE == ~0.
2010-08-18 Roland McGrath <>
* gelf_fsize.c (__libelf_type_sizes): Add entries for ELF_T_LIB
Reported by Mark Hatle <>.
* exttypes.h: Add cases for ElfNN_Lib.
Reported by Mark Hatle <>.
2010-06-14 Ulrich Drepper <>
* gelf_update_shdr.c: Implicitly set ELF_F_DIRTY bit.
* gelf_update_phdr.c: Likewise.
* gelf_update_ehdr.c: Likewise.
2010-04-14 Roland McGrath <>
* elf32_getphdr.c: Check for e_phoff/size outside the file bounds.
* elf_begin.c (file_read_elf): Don't set .phdr here.
2010-04-13 Roland McGrath <>
* elf.h: Update from glibc.
2010-04-06 Roland McGrath <>
* elf_error.c (ELF_E_FD_MISMATCH_IDX): Avoid nonobvious abbreviation
in error message.
2010-04-01 Petr Machata <>
* elf_getdata.c (__elf_getdata_rdlock): Initialize data.s for data
that do not need a conversion.
2010-03-11 Roland McGrath <>
* elf.h: Update from glibc.
2010-03-04 Ulrich Drepper <>
* elf.h: Update from glibc.
2010-02-17 Roland McGrath <>
* elf_begin.c (file_read_elf): Leave section rawdata_base and
data_base pointers null when [sh_offset,sh_size) points outside
the mapped file.
2010-02-15 Roland McGrath <>
* Use config/ for common stuff.
2010-01-07 Roland McGrath <>
* elf32_getphdr.c: Use __elf_getphdrnum_rdlock.
* gelf_getphdr.c: Likewise.
* gelf_update_phdr.c: Likewise.
* elf32_updatefile.c (__elf32_updatemmap, __elf32_updatefile): Likewise.
* elf32_updatenull.c (__elf32_updatenull_wrlock): Likewise.
* elf32_newphdr.c: Clear section 0's sh_info when resetting e_phnum.
If COUNT is too large, use store PN_XNUM instead and set sh_info.
* elf_begin.c (file_read_elf): Always allocate space we can use later
for section 0 if doing RDWR.
* elf_getphdrnum.c: New file.
* (libelf_a_SOURCES): Add it.
* libelf.h: Declare elf_getphdrnum.
* libelfP.h: Declare __elf_getphdrnum_rdlock.
* (ELFUTILS_1.6): New set, add elf_getphdrnum.
* elf.h: Update from glibc.
2009-10-23 Lubomir Rintel <>
* elf32_updatefile.c (fill_mmap): When starting past shdr_end, start
filling from section start, not shdr_end.
2009-11-10 Roland McGrath <>
* elf_readall.c (__libelf_readall): Fetch file size if not yet known.
2009-11-06 Mark Wielaard <>
* elf_next.c (elf_next): Mark the archive header as unusable when
there is no next ar element.
2009-08-12 Mark Wielaard <>
* ( Use -Wl,-z,defs not -defs.
2009-07-26 Ulrich Drepper <>
* elf.h: Update from glibc.
2009-07-21 Ulrich Drepper <>
* elf32_updatefile.c (__elfXX_updatemmap): Fix handling of gaps between
sections. Patch by Lubomir Rintel <>.
2009-07-08 Roland McGrath <>
* libelfP.h (struct Elf): Remove unused ar.has_index field.
Reorder various members for optimal packing.
2009-07-08 Ulrich Drepper <>
* elf.h: Update from glibc.
2009-06-13 Ulrich Drepper <>
* (libelf_a_SOURCES): Replace elf_getshnum.c and
elf_getshstrndx.c with elf_getshdrnum.c and elf_getshdrstrndx.c.
* elf_getshnum.c: Renamed to...
* elf_getshdrnum.c: ...this. Rename function and add old name as
alias. Likewise for internal functions with derived names.
* elf_getshstrndx.c: Renamed to...
* elf_getshdrstrndx.c: ...this. Rename function and add old name as
alias. Likewise for internal functions with derived names.
* libelf.h: Add prototypes for new names. Make old names as
* libelfP.h: Rename internal function prototypes.
* Export for names.
* elf32_checksum.c: Don't use deprecated functions.
* elf32_getshdr.c: Likewise.
2009-06-01 Ulrich Drepper <>
* elf.h: Update from glibc.
2009-04-14 Roland McGrath <>
* elf.h: Update from glibc.
2009-04-01 Roland McGrath <>
* elf.h: Update from glibc.
2009-02-10 Ulrich Drepper <>
* elf32_updatefile.c (updatefile): For the zeroth section we still
have to copy the section header.
2009-02-01 Ulrich Drepper <>
* elf_strptr.c: Add comment re possible problem.
2009-01-26 Ulrich Drepper <>
* elf32_updatenull.c (updatenull_wrlock): Fix comment of
ELF_F_LAYOUT behaviour re section header table.
2009-01-22 Ulrich Drepper <>
* elf32_updatefile.c (__elfXX_updatemmap): Fill the gap between
sections even if only the section at the start of the gap has been
(__elfXX_updatefile): Likewise.
2009-01-21 Ulrich Drepper <>
* elf32_updatefile.c (__elfXX_updatemmap): Skip most of the loop to
handle sections for NOBITS sections.
(elfXX_updatefile): Likewise.
* elf32_updatefile.c (__elfXX_updatemmap): When skipping non-NOBITS
sections we haven't loaded, update last_position based on scn_start,
not based on old value. Don't run the loop for the dummy section 0.
(elfXX_updatefile): Don't run the loop for the dummy section 0.
2009-01-10 Ulrich Drepper <>
* libelfP.h (_): We only have one translation domain, elfutils.
* Use USE_LOCKS instead of USE_TLS.
* elf_error.c: Always use __thread. Remove all !USE_TLS code.
2009-01-04 Roland McGrath <>
* note_xlate.h (elf_cvt_note): Don't examine a size too small to
container a note header.
2008-12-11 Roland McGrath <>
* elf32_updatefile.c (__elfw2(LIBELFBITS,updatemmap)): Handle
placement offset going backwards, for out-of-order or overlapping
(bogus) sh_offset layouts. It's a dumb use, but should not crash.
(__elfw2(LIBELFBITS,updatefile)): Likewise.
Fixes RHBZ#476136.
* libelf.h (Elf_Data): Whitespace fix.
2008-12-10 Roland McGrath <>
* elf_getarhdr.c (elf_getarhdr): Fix missing rename in last change.
2008-10-22 Petr Machata <>
* elf_rawfile.c (elf_rawfile): Lock around elf-> references.
2008-10-21 Petr Machata <>
* libelfP.h: Rename getehdr_rdlock to getehdr_wrlock.
* elf32_getehdr.c (getehdr_rdlock): Move the code to new function
getehdr_impl and make it a wrapper. Rename to getehdr_wrlock.
(getehdr_impl): Guard elf->class init with wrlock.
(getehdr): Also make it a wrapper of getehdr_impl.
* elf32_updatenull.c (updatenull_wrlock): Call getehdr_wrlock.
2008-10-20 Petr Machata <>
* elf_getdata_rawchunk.c (elf_getdata_rawchunk): Lock around the
code that reads mutable elf state. Relock to write lock to chain
the new chunk on the elf rawchunks list.
2008-10-20 Petr Machata <>
* elf32_checksum.c (checksum): Place a lock around the code that
processes data. Make it wrlock if the code needs to xlate the
data before processing.
2008-10-16 Petr Machata <>
* elf_begin.c
(__libelf_next_arhdr): Rename to __libelf_next_arhdr_wrlock.
(dup_elf): Adjust the call.
(elf_begin): New local function lock_dup_elf. Relocks the elf if
necessary before calling dup. Call this instead of dup_elf.
* elf_getarhdr.c
(elf_getarhdr): Lock before calling __libelf_next_arhdr_wrlock.
* elf_next.c (elf_next): Likewise.
* elf_rand.c (elf_rand): Likewise.
2008-10-14 Petr Machata <>
* elf_getdata.c (__elf_getdata_rdlock): Lock before converting.
2008-11-26 Roland McGrath <>
* elf.h: Update from glibc.
2008-10-06 Roland McGrath <>
* elf_getarhdr.c (elf_getarhdr): Return NULL when passed NULL.
2008-08-27 Roland McGrath <>
* elf_begin.c (get_shnum): Avoid misaligned reads for matching endian.
* libelfP.h [!ALLOW_UNALIGNED] (__libelf_type_align): Fix CLASS index.
2008-08-25 Roland McGrath <>
* (libelf_so_LDLIBS): New variable.
( Use it in the link.
2008-08-21 Petr Machata <>
* elf_getdata.c, libelfP.h
(__elf_getdata_internal): Rename to __elf_getdata_rdlock.
(__libelf_set_rawdata_wrlock): New function.
(__libelf_set_rawdata): Make it a wrapper that calls *_wrlock.
* elf32_updatenull.c, libelfP.h
(__elfNN_updatenull): Rename to __elfNN_updatenull_wrlock.
2008-08-21 Petr Machata <>
* elf32_getphdr.c, libelfP.h
(__elfNN_getphdr_internal): Drop. Move __elfNN_getphdr_internal
code to __elfNN_getphdr_wrlock.
(__elfNN_getphdr_rdlock, __elfNN_getphdr_wrlock): New functions.
(__elfNN_getphdr_rdlock, __elfNN_getphdr_wrlock): Make these
wrappers of getphdr_impl.
2008-08-21 Petr Machata <>
* elf32_getehdr.c, libelfP.h
(__elfNN_getehdr_internal): Rename to __elfNN_getehdr_rdlock.
* gelf_getehdr, libelfP.h:
(__gelf_getehdr_internal): Rename to __gelf_getehdr_rdlock.
2008-08-21 Petr Machata <>
* elf32_getshdr.c
(__elfNN_getshdr_internal): Drop.
(load_shdr_wrlock, scn_valid): New functions, contain bits of
behaviour from __elfNN_getshdr_internal.
(__elfNN_getshdr_rdlock, __elfNN_getshdr_wrlock): Replacements for
dropped _internal functions above.
* elf_getshnum.c
(__elf_getshnum_internal): Rename to __elf_getshnum_rdlock.
2008-08-04 Petr Machata <>
2008-07-28 Roland McGrath <>
* elf.h: Update from glibc.
2008-03-31 Roland McGrath <>
* elf32_offscn.c: Make sure shdrs have been read in.
2008-02-19 Roland McGrath <>
* elf.h: Update from glibc.
2008-02-08 Roland McGrath <>
* elf.h: Update from glibc.
2008-01-31 Ulrich Drepper <>
* elf_strptr.c (elf_strptr): Don't fail if the ELF file is currently
under construction and no raw data can be read from disk.
2008-01-30 Roland McGrath <>
* elf.h: Update from glibc.
2008-01-26 Roland McGrath <>
* elf_begin.c (__libelf_next_arhdr): Rewrite conversions using a macro.
Fixes various pastos in wrong type in sizeof, wrong string parsed.
2008-01-20 Roland McGrath <>
* elf_getaroff.c: Calculate from start_offset, instead of using
parent's field.
2008-01-08 Roland McGrath <>
* (euinclude): Variable removed.
(pkginclude_HEADERS): Set this instead of euinclude_HEADERS.
2008-01-03 Roland McGrath <>
* common.h: Add __attribute__ ((unused)) to static functions.
2007-12-20 Ulrich Drepper <>
* (libelf_a_SOURCES): Add elf_scnshndx.
* libelfP.h (struct Elf_Scn): Add shndx_index field.
Declare __elf_scnshndx_internal.
* elf32_getshdr.c: Record location of extended section header.
* elf_begin.c (file_read_elf): Likewise.
* elf_scnshndx.c: New file.
* libelf.h: Declare elf_scnshndx.
* Add elf_scnshndx to version ELFUTILS_1.4.
2007-11-12 Roland McGrath <>
* libelf.h: Replace off64_t with loff_t throughout.
Only that type name is unconditionally defined by <sys/types.h>
2007-11-03 Roland McGrath <>
* libelf.h (Elf_Data): Comment fix.
2007-10-18 Roland McGrath <>
* elf.h: Update from glibc.
2007-10-07 Roland McGrath <>
* elf_begin.c (__libelf_next_arhdr): Fix fencepost error and wrong
member access in terminating name with no trailing /. Trim trailing
spaces when there is no /.
2007-10-04 Roland McGrath <>
* elf_end.c (elf_end): Don't free ELF-> when it's -1l.
2007-10-03 Roland McGrath <>
* libelf.h (Elf_Data): Use off64_t for d_off.
(Elf_Arhdr): Use off64_t for ar_size.
(elf_update, elf_getbase, elf_getaroff): Return off64_t.
* gelf_rawchunk.c: File removed.
* gelf_freechunk.c: File removed.
* (libelf_a_SOURCES): Remove them.
* (ELFUTILS_1.0): Remove exports.
* gelf.h: Remove decls.
* elf_getdata_rawchunk.c: New file.
* (libelf_a_SOURCES): Add it.
* (ELFUTILS_1.3): Add elf_getdata_rawchunk.
* libelf.h: Declare it.
* libelfP.h (Elf_Data_Chunk): New type.
(struct Elf.elf): New member `rawchunks'.
* elf_end.c (elf_end): Free recorded rawchunk buffers.
2007-08-24 Roland McGrath <>
* gelf_getnote.c: New file.
* (libelf_a_SOURCES): Add it.
* gelf.h: Declare gelf_getnote.
* (ELFUTILS_1.3): Add gelf_getnote.
* libelfP.h (NOTE_ALIGN): New macro.
* note_xlate.h: New file.
* (noinst_HEADERS): Add it.
* gelf_xlate.c: Include it.
(__elf_xfctstom): Use elf_cvt_note.
* elf_getdata.c (shtype_map, __libelf_type_align): Handle SHT_NOTE.
(__libelf_set_rawdata): Likewise.
2007-08-19 Roland McGrath <>
* gelf_update_auxv.c: New file.
* gelf_getauxv.c: New file.
* (libelf_a_SOURCES): Add them.
* gelf.h: Declare gelf_getauxv, gelf_update_auxv.
* (ELFUTILS_1.3): New set, inherits fom ELFUTILS_1.2.
Export gelf_getauxv, gelf_update_auxv.
* libelf.h (Elf_Type): Add ELF_T_AUXV.
* abstract.h: Add auxv_t entries.
* exttypes.h: Likewise.
* gelf_xlate.h: Likewise.
* gelf_xlate.c (__elf_xfctstom): Add ELF_T_AUXV entries.
* gelf_fsize.c (__libelf_type_sizes): Likewise.
2007-08-12 Roland McGrath <>
* elf32_updatefile.c (compare_sections): Sort secondarily on sh_size,
and only tertiarily on index.
2007-07-09 Roland McGrath <>
* elf.h: Update from glibc.
2007-04-22 Roland McGrath <>
* elf.h: Update from glibc.
2007-03-18 Roland McGrath <>
* elf_begin.c (get_shnum): Fix test for e_shoff being out of bounds.
Return zero when the section headers do not fit within MAXSIZE.
2007-03-09 Roland McGrath <>
* libelfP.h (LIBELF_EV_IDX): New macro.
(__libelf_type_align): New macro.
[! ALLOW_UNALIGNED]: Declare __libc_type_aligns array.
* elf_getdata.c (shtype_map): Convert to just Elf_Type[][].
(convert_data, __libelf_set_rawdata): Use that, __libelf_type_align,
and __libelf_type_sizes, in place of old table.
(__libc_type_aligns): New const variable.
2007-02-04 Ulrich Drepper <>
* Makefile ( Build with -z relro.
* elf_begin.c (read_file): When using ELF_C_READ_MMAP use MAP_PRIVATE.
2007-01-30 Ulrich Drepper <>
* nlist.c: Close file descriptor before returning.
2007-01-20 Roland McGrath <>
* gnuhash_xlate.h (elf_cvt_gnuhash): Fix fence-post error so we
convert the final word.
* elf32_getshdr.c: Don't byteswap shdr fields when EI_DATA matches
2007-01-18 Roland McGrath <>
* gelf_rawchunk.c (gelf_rawchunk): Clear RESULT pointer after freeing
it on read error.
2006-10-13 Roland McGrath <>
* elf32_updatenull.c: Look for and accept phdr also for ET_CORE.
* elf_error.c (msgstr): Change ELF_E_INVALID_PHDR string.
2006-08-29 Roland McGrath <>
* elf32_getphdr.c: Don't byteswap phdr fields when EI_DATA matches
Reported by Christian Aichinger <>.
2006-08-08 Ulrich Drepper <>
* elf.h (DT_VALNUM): Update.
(DT_ADDRNUM): Likewise.
2006-07-12 Ulrich Drepper <>
* elf32_updatefile.c: Adjust for internal_function_def removal.
* elf32_updatenull.c: Likewise.
* elf_begin.c: Likewise.
* elf_getdata.c: Likewise.
2006-07-11 Ulrich Drepper <>
* libelf.h: Define ELF_T_GNUHASH.
* elf_getdata.c (TYPEIDX): Handle SHT_GNU_HASH.
(shtype_map): Add SHT_GNU_HASH entries.
* gelf_xlate.c (__elf_xfctstom): Add ELF_T_GNUHASH entries.
* gnuhash_xlate.h: New file.
* (noinst_HEADERS): Add gnuhash_xlate.h.
2006-07-06 Ulrich Drepper <>
* elf_gnu_hash.c: New file.
* libelf.h: Declare elf_gnu_hash.
* (libelf_a_SOURCES): Add elf_gnu_hash.
* Add elf_gnu_map for version ELFUTILS_1.2.
2006-06-15 Roland McGrath <>
* libelf.h (elf_getarsym): Fix comment typo.
Rename second parameter to be more explanatory.
(elf_getident, elf_rawhide): Likewise.
2006-05-28 Ulrich Drepper <>
* elf32_updatefile.c (updatemmap): Preserve section content if
copying would overwrite them.
Fix msync paramters.
2006-04-04 Roland McGrath <>
* elf32_updatefile.c (updatemmap): Handle other-endian case.
2006-04-04 Ulrich Drepper <>
* elf32_updatefile.c (updatemmap): Cleanups. Remove shdr_dest
variable. Before writing sections, make a copy of the section
header data if necessary. Don't write section header while
writing the section constent, it might overwrite some sections.
Restore the pointer afterwards.
* elf32_updatenull.c (updatenull): If the offset of a section in a
file changed make sure we read the section so that it'll be written
* elf_update.c: Remove debug message.
2005-12-07 Roland McGrath <>
* gelf_xlate.c [! ALLOW_UNALIGNED] (union unaligned): New type.
(FETCH, STORE): New macros.
(INLINE3): Use those to do alignment-friendly conversion.
* elf32_getshdr.c: Include map_address and start_offset in alignment
* elf32_getphdr.c: Likewise.
2005-11-19 Roland McGrath <>
* elf.h: Update from glibc.
2005-11-17 Roland McGrath <>
* elf.h: Update from glibc.
2005-11-10 Roland McGrath <>
* elf.h: Update from glibc.
2005-09-09 Roland McGrath <>
* elf_update.c (write_file): Stat the file and fchmod it after update
if its mode had S_ISUID or S_ISGID bits set.
2005-08-28 Ulrich Drepper <>
* elf32_getphdr.c: Include <system.h>. Use pread_retry instead of
pread. And branch prediction where useful.
* elf_begin.c: Likewise.
* elf_getdata.c: Likewise.
* elf_getshstrndx.c: Likewise.
* elf_readall.c: Likewise.
* gelf_rawchunk.c: Likewise.
* elf32_updatefile.c: Include <system.h>. Use pread_retry instead of
pread. And branch prediction where useful.
* elf_getarsym.c: Don't define pread_retry here.
* Use $(LINK) not $(CC) when creating DSO.
(%.os): Use COMPILE.os.
(COMPILE.os): Filter out gconv options.
2005-08-27 Ulrich Drepper <>
* elf_begin.c (file_read_elf): Avoid reading ELF header from file
again. Instead accept additional parameter which points to it if we
don't use mmap.
(get_shnum): Use passed in e_ident value as source of ELF header.
2005-08-15 Ulrich Drepper <>
* elf_begin.c (__libelf_next_arhdr): Use TEMP_FAILURE_RETRY.
* Makefile (libelf_a_SOURCES): Add elf_getaroff.c.
* Export elf_getaroff.
* libelf.h: Declare elf_getaroff.
* elf_getaroff.c: New file.
2005-08-13 Ulrich Drepper <>
* elf_begin.c (get_shnum): Optimize memory handling. Always read from
mapped file if available. Fix access to 64-bit sh_size. Recognize
(file_read_elf): Likewise.
2005-08-12 Roland McGrath <>
* elf32_offscn.c: Do not match empty sections at OFFSET unless
there are no nonempty sections at that offset.
2005-08-07 Ulrich Drepper <>
* elf.h: Update from glibc.
2005-08-06 Ulrich Drepper <>
* (AM_CFLAGS): Add -fpic when BUILD_STATIC.
2005-08-03 Ulrich Drepper <>
* Move elf32_offscn, elf64_offscn, and gelf_offscn in
new version ELFUTILS_1.1.1.
2005-08-02 Ulrich Drepper <>
* elf_error.c: Add handling of ELF_E_INVALID_OFFSET.
* elf32_offscn.c: New file.
* elf64_offscn.c: New file.
* gelf_offscn.c: New file.
* (libelf_a_SOURCES): Add elf32_offscn.c, elf64_offscn.c,
and gelf_offscn.c.
* libelf.sym: Export new symbols.
2005-07-23 Ulrich Drepper <>
* elf-knowledge.h (SECTION_STRIP_P): Don't handle removal of debug
sections here anymore.
* elf32_checksum.c: Adjust for change in SECTION_STRIP_P interface.
* elf_update.c (elf_update): Get write lock, not read lock.
* elf32_updatenull.c (updatenull): Get section headers if necessary
and possible.
2005-07-22 Ulrich Drepper <>
* elf32_updatenull.c (updatenull): If program header hasn't been loaded
yet, try to do it now.
Don't unnecessarily update overflow of section count in zeroth section
sh_size field.
If section content hasn't been read yet, do it before looking for the
block size. If no section data present, infer size of section header.
2005-05-11 Ulrich Drepper <>
* elf.h: Update again.
2005-05-09 Ulrich Drepper <>
* elf.h: Update from glibc.
2005-05-08 Roland McGrath <>
* elf_begin.c (read_file) [_MUDFLAP]: Don't use mmap for now.
* elf_update.c (write_file) [_MUDFLAP]: Likewise.
2005-03-29 Ulrich Drepper <>
* elf32_checksum.c: Use INTUSE and INTDEF to avoid PLTs.
* elf_end.c: Likewise.
* elf_getdata.c: Likewise.
* gelf_getehdr.c: Likewise.
* nlist.c: Likewise.
* libelfP.h: Add declarations of internal functions.
2005-02-15 Ulrich Drepper <>
* common.h (CONVERT): Make sure all values are unsigned.
(CONVERT_TO): Likewise.
* (AM_CFLAGS): Add -Wformat=2.
Fix rule to build
2005-02-06 Ulrich Drepper <>
* Cleanup AM_CFLAGS handling. Add -Wunused -Wextra.
Remove lint handling.
* elf32_getphdr.c: Minor cleanups.
* elf32_getshdr.c: Likewise.
* elf32_updatefile.c: Likewise.
* elf32_updatenull.c: Likewise.
* elf_begin.c: Likewise.
* elf_error.c: Likewise.
* elf_getarsym.c: Likewise.
* elf_getdata.c: Likewise.
* elf_update.c: Likewise.
* gelf_xlate.c: Likewise.
2005-02-05 Ulrich Drepper <>
* Check for text relocations in constructed DSO.
* [MUDFLAP] (AM_CFLAGS): Add -Werror -fpic -fmudflap.
2005-02-04 Ulrich Drepper <>
* gelf_getehdr.c (gelf_getehdr): Slight optimization.
* elf32_checksum.c (checksum): Do not look at NOBITS sections.
* gelf.h: Add gelf_checksum prototype.
2004-09-25 Ulrich Drepper <>
* elf32_checksum.c: Make compile with gcc 4.0.
* elf32_updatefile.c: Likewise.
* elf32_updatenull.c: Likewise.
* elf_begin.c: Likewise.
* elf_error.c: Likewise.
* elf_getdata.c: Likewise.
* elf_getident.c: Likewise.
2004-04-01 Ulrich Drepper <>
* elf.h: Update from glibc.
2004-01-23 Ulrich Drepper <>
* elf_update.c: Fix locking.
* elf_clone.c: Likewise.
* libelf.h: Define ELF_T_LIB.
* gelf_getlib.c: New file.
* gelf_update_lib.c: New file.
* gelf.h: Declare the new functions. Define GElf_Lib.
* abstract.h: Define Lib, Lib32, Lib64.
* gelf_xlate.c (__elf_xfctstom): Add ELF_T_LIB entry.
* gelf_xlate.h: Add entry for ElfXX_Lib.
* elf_getdata.c: Recognize SHT_GNU_LIBLIST as a known section type.
* Add new symbols to ELFUTILS_1.1.
* (libelf_a_SOURCES): Add gelf_getlib.c and
2004-01-17 Ulrich Drepper <>
* Support building with mudflap.
* gelf_xlate.c (INLINE3): Avoid using cast as lvalue.
* dl-hash.h (_dl_elf_hash): Likewise.
2004-01-05 Ulrich Drepper <>
* elf-knowledge.h: New file. From libelf subdir.
* (euincludedir): Define.
(euinclude_HEADERS): Add elf-knowledge.h.
2003-09-24 Ulrich Drepper <>
* elf.h: Define some PT_IA_64_HP_* constants.
2003-09-23 Jakub Jelinek <>
* libelfP.h (struct Elf): Move state.elf64.sizestr_offset after
state.elf64.scnincr to match state.elf{,32}.
2003-08-12 Ulrich Drepper <>
* elf32_updatefile.c (__updatemmap): When writing back file where
some sections have not been read in, count their sizes based on
the section header.
2003-08-11 Ulrich Drepper <>
* Moved to CVS archive.