Lines Matching +full:x +full:- +full:size

1 /*-
2 * SPDX-License-Identifier: BSD-4-Clause
63 #define xewtoh(x) ((data == ELFDATA2MSB) ? be32toh(x) : le32toh(x)) argument
64 #define htoxew(x) ((data == ELFDATA2MSB) ? htobe32(x) : htole32(x)) argument
65 #define wewtoh(x) ((data == ELFDATA2MSB) ? be32toh(x) : le32toh(x)) argument
66 #define htowew(x) ((data == ELFDATA2MSB) ? htobe32(x) : htole32(x)) argument
69 #define xewtoh(x) ((data == ELFDATA2MSB) ? be64toh(x) : le64toh(x)) argument
70 #define htoxew(x) ((data == ELFDATA2MSB) ? htobe64(x) : htole64(x)) argument
72 #define wewtoh(x) ((data == ELFDATA2MSB) ? be32toh(x) : le32toh(x)) argument
73 #define htowew(x) ((data == ELFDATA2MSB) ? htobe32(x) : htole32(x)) argument
77 #define CONCAT(x,y) __CONCAT(x,y) argument
78 #define ELFNAME(x) CONCAT(elf,CONCAT(ELFSIZE,CONCAT(_,x))) argument
79 #define ELFNAME2(x,y) CONCAT(x,CONCAT(_elf,CONCAT(ELFSIZE,CONCAT(_,y)))) argument
80 #define ELFNAMEEND(x) CONCAT(x,CONCAT(_elf,ELFSIZE)) argument
81 #define ELFDEFNNAME(x) CONCAT(ELF,CONCAT(ELFSIZE,CONCAT(_,x))) argument
86 #define xe16toh(x) ((data == ELFDATA2MSB) ? be16toh(x) : le16toh(x)) argument
87 #define xe32toh(x) ((data == ELFDATA2MSB) ? be32toh(x) : le32toh(x)) argument
88 #define htoxe32(x) ((data == ELFDATA2MSB) ? htobe32(x) : htole32(x)) argument
96 xreadatoff(int fd, void *buf, off_t off, size_t size, const char *fn) in xreadatoff() argument
102 return -1; in xreadatoff()
104 if ((size_t)(rv = read(fd, buf, size)) != size) { in xreadatoff()
106 rv == -1 ? strerror(errno) : "short read"); in xreadatoff()
107 return -1; in xreadatoff()
109 return size; in xreadatoff()
113 xwriteatoff(int fd, void *buf, off_t off, size_t size, const char *fn) in xwriteatoff() argument
119 return -1; in xwriteatoff()
121 if ((size_t)(rv = write(fd, buf, size)) != size) { in xwriteatoff()
123 rv == -1 ? strerror(errno) : "short write"); in xwriteatoff()
124 return -1; in xwriteatoff()
126 return size; in xwriteatoff()
130 xmalloc(size_t size, const char *fn, const char *use) in xmalloc() argument
134 rv = malloc(size); in xmalloc()
142 xrealloc(void *ptr, size_t size, const char *fn, const char *use) in xrealloc() argument
146 rv = realloc(ptr, size); in xrealloc()
164 * appropriate size). in ELFNAMEEND()
166 if (fstat(fd, &sb) == -1) in ELFNAMEEND()
234 size_t nstrtab_size, nstrtab_nextoff, fn_size, size; in ELFNAMEEND() local
309 for (i = shnum; i-- != 0;) { in ELFNAMEEND()
315 xewtoh(layoutp[m].shdr->sh_offset)) in ELFNAMEEND()
318 r = m - 1; in ELFNAMEEND()
323 sizeof(struct shlayout) * (r - i)); in ELFNAMEEND()
336 if ((size = xewtoh(shstrtabshdr->sh_size)) == 0) in ELFNAMEEND()
338 if ((shstrtabp = xmalloc(size, fn, "section string table")) == NULL) in ELFNAMEEND()
340 if ((size_t)xreadatoff(fd, shstrtabp, xewtoh(shstrtabshdr->sh_offset), in ELFNAMEEND()
341 size, fn) != size) in ELFNAMEEND()
343 if (shstrtabp[size - 1] != '\0') in ELFNAMEEND()
363 off = xewtoh(layoutp[i].shdr->sh_offset); in ELFNAMEEND()
364 if ((size = xewtoh(layoutp[i].shdr->sh_size)) == 0) in ELFNAMEEND()
366 layoutp[i].bufp = xmalloc(size, fn, in ELFNAMEEND()
367 shstrtabp + xewtoh(layoutp[i].shdr->sh_name)); in ELFNAMEEND()
370 if ((size_t)xreadatoff(fd, layoutp[i].bufp, off, size, fn) != in ELFNAMEEND()
371 size) in ELFNAMEEND()
379 if (strtabp[size - 1] != '\0') in ELFNAMEEND()
394 nsyms = xewtoh(symtabshdr->sh_size) / xewtoh(symtabshdr->sh_entsize); in ELFNAMEEND()
399 const char *symname = strtabp + xe32toh(sp->st_name); in ELFNAMEEND()
402 * make sure there's size for the next entry, even if it's in ELFNAMEEND()
405 * "_$$hide$$ <filename> <symname><NUL>" -> in ELFNAMEEND()
408 while ((nstrtab_size - nstrtab_nextoff) < in ELFNAMEEND()
417 sp->st_name = htowew(nstrtab_nextoff); in ELFNAMEEND()
421 (xe16toh(sp->st_shndx) == SHN_UNDEF)) { in ELFNAMEEND()
430 strtabshdr->sh_size = htoxew(nstrtab_nextoff); in ELFNAMEEND()
437 soff = xewtoh(layoutp[i - 1].shdr->sh_offset) + in ELFNAMEEND()
438 xewtoh(layoutp[i - 1].shdr->sh_size); in ELFNAMEEND()
439 align = xewtoh(layoutp[i].shdr->sh_addralign); in ELFNAMEEND()
440 soff = (soff + (align - 1)) & ~(align - 1); in ELFNAMEEND()
441 layoutp[i].shdr->sh_offset = htoxew(soff); in ELFNAMEEND()
447 for (i = shnum; i-- != 0;) { in ELFNAMEEND()
467 size = sizeof(Elf_Off); in ELFNAMEEND()
468 if ((size_t)xwriteatoff(fd, &ehdr.e_shoff, off, size, in ELFNAMEEND()
469 fn) != size) in ELFNAMEEND()
473 off = xewtoh(layoutp[i].shdr->sh_offset); in ELFNAMEEND()
474 size = xewtoh(layoutp[i].shdr->sh_size); in ELFNAMEEND()
475 if ((size_t)xwriteatoff(fd, buf, off, size, fn) != size) in ELFNAMEEND()
496 #endif /* include this size of ELF */