Lines Matching +full:de +full:- +full:assert

1 /*-
27 #include <assert.h>
32 ELFTC_VCSID("$Id: libelf_xlate.c 3732 2019-04-22 11:08:38Z jkoshy $");
40 * - an endianness conversion,
41 * - a change of layout, as the file representation of ELF objects
42 * can differ from their in-memory representation.
43 * - a change in representation due to a layout version change.
52 uintptr_t sb, se, db, de; in _libelf_xlate() local
64 assert(elfclass == ELFCLASS32 || elfclass == ELFCLASS64); in _libelf_xlate()
65 assert(direction == ELF_TOFILE || direction == ELF_TOMEMORY); in _libelf_xlate()
67 if (dst->d_version != src->d_version) { in _libelf_xlate()
72 if (src->d_buf == NULL || dst->d_buf == NULL) { in _libelf_xlate()
77 if ((int) src->d_type < 0 || src->d_type >= ELF_T_NUM) { in _libelf_xlate()
83 (src->d_type, (size_t) 1, src->d_version)) == 0) in _libelf_xlate()
86 if ((msz = _libelf_msize(src->d_type, elfclass, src->d_version)) == 0) in _libelf_xlate()
89 if (src->d_size % (direction == ELF_TOMEMORY ? fsz : msz)) { in _libelf_xlate()
100 cnt = (size_t) src->d_size / fsz; in _libelf_xlate()
103 cnt = (size_t) src->d_size / msz; in _libelf_xlate()
107 if (dst->d_size < dsz) { in _libelf_xlate()
112 sb = (uintptr_t) src->d_buf; in _libelf_xlate()
113 se = sb + (size_t) src->d_size; in _libelf_xlate()
114 db = (uintptr_t) dst->d_buf; in _libelf_xlate()
115 de = db + (size_t) dst->d_size; in _libelf_xlate()
121 if (db != sb && de > sb && se > db) { in _libelf_xlate()
127 _libelf_malign(src->d_type, elfclass)) { in _libelf_xlate()
132 dst->d_type = src->d_type; in _libelf_xlate()
133 dst->d_size = dsz; in _libelf_xlate()
137 if (src->d_size == 0 || in _libelf_xlate()
141 xlator = _libelf_get_translator(src->d_type, direction, elfclass, in _libelf_xlate()
143 if (!xlator(dst->d_buf, dsz, src->d_buf, cnt, byteswap)) { in _libelf_xlate()