11 Commits

Author SHA1 Message Date
Kai Wang
ea22f625a7 libelf is overly strict about the type and alignment of Elf_Data
objects inside one ELF section, which prevents the creation of a ELF
section with mixed data types. For example, gcc LTO use libelf to
create a .gnu_lto_XXX section that contains integers and a string
table, which doesn't work with our libelf implementation.

The changes made in this commit include:
* Allow Elf_Data type to be different than section type.
* Relax Elf_Data alignment check.
* Align each Elf_Data by their own alignment instead of section alignment.

MFC after:   1 month
2010-09-09 18:51:50 +00:00
Kai Wang
e2efa43644 Fix a memory leak.
Obtained from:	elftoolchain
MFC after:		1 month
2010-07-21 12:30:58 +00:00
Kai Wang
7384c87800 Allow an application that updates only the ELF Ehdr to work.
Obtained from:	elftoolchain
MFC after:		1 month
2010-07-21 09:47:14 +00:00
Kai Wang
c0308c2c84 Bug fix: permit the creation of zero-sized sections.
Obtained from:	elftoolchain
MFC after:		1 month
2010-07-21 09:27:16 +00:00
Kai Wang
3fd7b10a01 Improve compatibility with other implementations of the ELF(3) API:
when an output file has no program headers, set the 'e_phentsize'
field of the ELF executable header to zero.

Obtained from:	elftoolchain
MFC after:		1 month
2010-07-21 09:20:40 +00:00
Kai Wang
c0aaca95a7 Remove a superfluous comment.
Obtained from:	     elftoolchain
MFC after:	     1 month
2010-07-21 08:43:48 +00:00
Joseph Koshy
b23372cd8e Ensure that the section header table is written out in an order
consistent with the section indices returned to the application by
elf_ndxscn().

Submitted by:		kaiw
2008-03-19 06:06:34 +00:00
Joseph Koshy
2a100d2353 - Fix an off-by-one bug in _libelf_insert_section(). [1]
- Update (c) years.

Submitted by:		kaiw [1]
2008-03-03 04:29:25 +00:00
Joseph Koshy
36c39678d6 Fix a bug that prevented applications from laying out ELF objects
with section header tables residing in between other sections.

Introduce additional checks for overlaps between section data and
the section header table when the application is performing section
layout.

Document additional error returns.

Reported by:	Kai Wang <kaiw27 at gmail dot com>
Approved by:	re (rwatson)
2007-09-08 08:20:12 +00:00
Joseph Koshy
f6c0f35e07 Keep shadow copies of the e_shnum', e_phnum' and `e_shstrndx'
members of the ELF Executable Header inside the library-private
`struct _Elf' descriptor and only update the underlying Elf{32,64}_Ehdr
structure on an elf_update(3) call.  These fields of the Ehdr
structure are technically `out of bounds' for an application program
per the ELF(3) API, but we've seen applications that initialize
a new Ehdr structure using memcpy(), messing up the library's
invariants. [1]

Implement elf_getphnum() and handle ELF objects with more than
64K program header table entries.

Reported by:	jb [1]
2006-12-25 02:22:22 +00:00
Joseph Koshy
3eb1a62e69 MFP4: Add an implementation of the ELF(3) and GELF(3) API set.
Bump __FreeBSD_version.

Reviewed by:	jb
2006-11-11 17:16:35 +00:00