summaryrefslogtreecommitdiffstats
path: root/libelf/libelfP.h
diff options
context:
space:
mode:
authorMark Wielaard <[email protected]>2019-01-11 13:39:27 +0100
committerMark Wielaard <[email protected]>2019-01-11 13:39:27 +0100
commitb244a241a82c28f7fef33f37d82bc47631ceca4e (patch)
tree8b83c72f0a99dca6624f0903e8c3ee1eb26ad900 /libelf/libelfP.h
parent029c76f0d4b06584e370b5fc0112712ba99a6219 (diff)
parent4ea9a2db164caadf836a65d5cdffb09a2d5a37ce (diff)
Merge tag 'elfutils-0.175' into mjw/RH-DTSdts-0.175
elfutils 0.175 release
Diffstat (limited to 'libelf/libelfP.h')
-rw-r--r--libelf/libelfP.h16
1 files changed, 11 insertions, 5 deletions
diff --git a/libelf/libelfP.h b/libelf/libelfP.h
index ed216c8c..9f3e8e9d 100644
--- a/libelf/libelfP.h
+++ b/libelf/libelfP.h
@@ -452,7 +452,8 @@ extern const uint_fast8_t __libelf_type_aligns[EV_NUM - 1][ELFCLASSNUM - 1][ELF_
/* Given an Elf handle and a section type returns the Elf_Data d_type.
Should not be called when SHF_COMPRESSED is set, the d_type should
be ELF_T_BYTE. */
-extern Elf_Type __libelf_data_type (Elf *elf, int sh_type) internal_function;
+extern Elf_Type __libelf_data_type (Elf *elf, int sh_type, GElf_Xword align)
+ internal_function;
/* The libelf API does not have such a function but it is still useful.
Get the memory size for the given type.
@@ -460,9 +461,9 @@ extern Elf_Type __libelf_data_type (Elf *elf, int sh_type) internal_function;
These functions cannot be marked internal since they are aliases
of the export elfXX_fsize functions.*/
extern size_t __elf32_msize (Elf_Type __type, size_t __count,
- unsigned int __version);
+ unsigned int __version) __const_attribute__;
extern size_t __elf64_msize (Elf_Type __type, size_t __count,
- unsigned int __version);
+ unsigned int __version) __const_attribute__;
/* Create Elf descriptor from memory image. */
@@ -624,8 +625,13 @@ extern void __libelf_reset_rawdata (Elf_Scn *scn, void *buf, size_t size,
} \
} while (0)
-/* Align offset to 4 bytes as needed for note name and descriptor data. */
-#define NOTE_ALIGN(n) (((n) + 3) & -4U)
+/* Align offset to 4 bytes as needed for note name and descriptor data.
+ This is almost always used, except for GNU Property notes, which use
+ 8 byte padding... */
+#define NOTE_ALIGN4(n) (((n) + 3) & -4U)
+
+/* Special note padding rule for GNU Property notes. */
+#define NOTE_ALIGN8(n) (((n) + 7) & -8U)
/* Convenience macro. */
#define INVALID_NDX(ndx, type, data) \