alpha and s390x gratuitously use 64-bit entries (wasting 2x space and
cache utilization) despite the values always being 32-bit.
based on patch by Bobby Bingham, with changes suggested by Alexander
Monakov to use the public Elf_Symndx type from link.h (and make it
properly variable by arch) rather than adding new internal
infrastructure for handling the type.
--- /dev/null
+typedef uint32_t Elf_Symndx;
#define ElfW(type) Elf32_ ## type
#endif
-/* this is the same everywhere except alpha and s390 */
-typedef uint32_t Elf_Symndx;
+#include <bits/link.h>
struct dl_phdr_info {
ElfW(Addr) dlpi_addr;
size_t phentsize;
int refcnt;
Sym *syms;
- uint32_t *hashtab;
+ Elf_Symndx *hashtab;
uint32_t *ghashtab;
int16_t *versym;
char *strings;
{
size_t i;
Sym *syms = dso->syms;
- uint32_t *hashtab = dso->hashtab;
+ Elf_Symndx *hashtab = dso->hashtab;
char *strings = dso->strings;
for (i=hashtab[2+h%hashtab[0]]; i; i=hashtab[2+hashtab[0]+i]) {
if ((!dso->versym || dso->versym[i] >= 0)
#include <elf.h>
+#include <link.h>
#include <limits.h>
#include <stdint.h>
#include <string.h>
char *strings = 0;
Sym *syms = 0;
- uint32_t *hashtab = 0;
+ Elf_Symndx *hashtab = 0;
uint16_t *versym = 0;
Verdef *verdef = 0;