X-Git-Url: https://git.cworth.org/git?p=glaze;a=blobdiff_plain;f=glaze-gl.c;h=453d4606f2be1320b009630bf1e041960b190afc;hp=d4ad33f77023415466f76febc3ce5c62c8437f44;hb=f427658599546afd1fa19c31f25001ada8c0667d;hpb=fded9f20d5f5c92bd5af051117327816dda0238e diff --git a/glaze-gl.c b/glaze-gl.c index d4ad33f..453d460 100644 --- a/glaze-gl.c +++ b/glaze-gl.c @@ -27,52 +27,10 @@ #include #include -#include void *libgl_handle; void *wrapper_handle; -/* Is the given elf program 32 or 64 bit? - * - * Note: This function returns -1 if 'filename' cannot - * be opened as a valid ELF file. - */ -static int -elf_bits (const char *filename) -{ - Elf *elf; - GElf_Ehdr ehdr; - int fd, class; - - fd = open (filename, O_RDONLY, 0); - if (fd < 0) - return -1; - - if (elf_version (EV_CURRENT ) == EV_NONE) - return -1; - - elf = elf_begin (fd, ELF_C_READ, NULL); - if (elf == NULL) - return -1; - - if (elf_kind (elf) != ELF_K_ELF) - return -1; - - if (gelf_getehdr (elf, &ehdr) == NULL) - return -1; - - class = gelf_getclass (elf); - - switch (class) { - case ELFCLASS32: - return 32; - case ELFCLASS64: - return 64; - default: - return -1; - } -} - static void open_libgl_handle (void) { @@ -84,20 +42,12 @@ open_libgl_handle (void) libgl_path = getenv ("GLAZE_LIBGL"); if (libgl_path == NULL) { - Dl_info info; - int bits; - - if (dladdr (open_libgl_handle, &info) == 0) { - fprintf (stderr, "Internal error: Failed to lookup filename of glaze library with dladdr.\n"); - exit (1); - } - - bits = elf_bits (info.dli_fname); - if (bits == 32) - libgl_path = getenv ("GLAZE_LIBGL_32_AUTO"); - if (bits == 64) - libgl_path = getenv ("GLAZE_LIBGL_64_AUTO"); +#if GLAZE_BITS == 32 + libgl_path = getenv ("GLAZE_LIBGL_32_AUTO"); +#elif GLAZE_BITS == 64 + libgl_path = getenv ("GLAZE_LIBGL_64_AUTO"); +#endif if (libgl_path == NULL) { fprintf (stderr,