From 6585cb60ee7aafc3301c402dda12d6771dfb7fa3 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 5 Sep 2011 21:49:14 -0400 Subject: [PATCH] Remove unused parameter in pldd and simplify ELF handling --- ChangeLog | 6 ++++++ elf/pldd-xx.c | 2 +- elf/pldd.c | 16 ++++++---------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 299f86b..3f8a821 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-09-05 Ulrich Drepper + + * elf/pldd.c (get_process_info): Don't read whole ELF header, just + e_ident. Don't pass to find_mapsXX. + * elf/pldd-xx.c (find_mapsXX): Remove second parameter. + 2011-07-20 Liubov Dmitrieva * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add diff --git a/elf/pldd-xx.c b/elf/pldd-xx.c index 59419bc..8ecd468 100644 --- a/elf/pldd-xx.c +++ b/elf/pldd-xx.c @@ -79,7 +79,7 @@ static_assert (r_map, (offsetof (struct r_debug, r_map) static int -E(find_maps) (pid_t pid, EW(Ehdr) *ehdr, void *auxv, size_t auxv_size) +E(find_maps) (pid_t pid, void *auxv, size_t auxv_size) { EW(Addr) phdr = 0; unsigned int phnum = 0; diff --git a/elf/pldd.c b/elf/pldd.c index 29879f7..e97d96a 100644 --- a/elf/pldd.c +++ b/elf/pldd.c @@ -247,17 +247,13 @@ get_process_info (int dfd, long int pid) return EXIT_FAILURE; } - union - { - Elf32_Ehdr ehdr32; - Elf64_Ehdr ehdr64; - } uehdr; - if (read (fd, &uehdr, sizeof (uehdr)) != sizeof (uehdr)) + char e_ident[EI_NIDENT]; + if (read (fd, e_ident, EI_NIDENT) != EI_NIDENT) goto no_info; close (fd); - if (memcmp (uehdr.ehdr32.e_ident, ELFMAG, SELFMAG) != 0) + if (memcmp (e_ident, ELFMAG, SELFMAG) != 0) { error (0, 0, gettext ("process %lu is no ELF program"), pid); return EXIT_FAILURE; @@ -287,10 +283,10 @@ get_process_info (int dfd, long int pid) close (fd); int retval; - if (uehdr.ehdr32.e_ident[EI_CLASS] == ELFCLASS32) - retval = find_maps32 (pid, &uehdr.ehdr32, auxv, auxv_size); + if (e_ident[EI_CLASS] == ELFCLASS32) + retval = find_maps32 (pid, auxv, auxv_size); else - retval = find_maps64 (pid, &uehdr.ehdr64, auxv, auxv_size); + retval = find_maps64 (pid, auxv, auxv_size); free (auxv); close (memfd); -- 2.7.4