mirror of
https://github.com/openharmony/third_party_elfutils.git
synced 2026-07-01 06:41:51 -04:00
5199e15870e05e5b0b9f98c20fc9b5427aa6dd6a
GNU Property notes are different from normal notes because they use variable alignment/padding of their fields. They are 8 byte aligned, but use 4 byte fields. The name is aligned at 4 bytes and padded so that, the desc is aligned at 8 bytes. The whole note is padded to 8 bytes again. For normal notes all fields are both 4 bytes wide and 4 bytes aligned. To recognize these new kind of ELF Notes a new Elf_Type is introduced, ELF_T_NHDR8. This type is used in the xlate functions to determine how to align and pad the various fields. Since the fields themselves can now have different alignments we will have to keep track of the current alignement and use either NOTE_ALIGN4 or NOTE_ALIGN8 to determine the padding. To set the correct Elf_Type on the Elf_Data we use either the section sh_addralign or the segment p_align values. Assuming 8 means the section or segment contains the new style notes, otherwise normal notes. When we cannot determine the "alignment" directly, like when parsing special kernel sys files, we check the name "GNU" and type "GNU_PROPERTY_TYPE_0" fields. ebl_object_note now parses the new NT_GNU_PROPERTY_TYPE_0 and can extract the GNU_PROPERTY_STACK_SIZE, GNU_PROPERTY_NO_COPY_ON_PROTECTED and GNU_PROPERTY_X86_FEATURE_1_AND types GNU_PROPERTY_X86_FEATURE_1_IBT and GNU_PROPERTY_X86_FEATURE_1_SHSTK. Tests are added for extracting the note from sections or segments as set by gcc -fcf-protection. Signed-off-by: Mark Wielaard <mark@klomp.org>
The elfutils project provides libraries and tools for ELF files and DWARF data. The project home is http://elfutils.org/ Releases are published at ftp://sourceware.org/pub/elfutils/ Which can also be found at https://sourceware.org/elfutils/ftp/ To build a release do: ./configure && make && make check Please check the configure summary to make sure all recommended features are enabled. There should be no failures after make check. Please reports bugs at https://sourceware.org/bugzilla/ The current elfutils source code can be checked out with git clone git://sourceware.org/git/elfutils.git To build a git checkout do: autoreconf -i -f && \ ./configure --enable-maintainer-mode && \ make && make check The developer mailinglist to send patches to is elfutils-devel@sourceware.org. https://sourceware.org/ml/elfutils-devel/ To subscribe send an email to elfutils-devel-subscribe@sourceware.org Or use the form at https://sourceware.org/lists.html#ml-requestor See the CONTRIBUTING file for how to propose patches to the code. See the NOTES files for some design decisions and notes.
Description
Languages
C
70.8%
Shell
22.6%
C++
3.3%
Makefile
1.4%
M4
1%
Other
0.8%