aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--elf/pldd-xx.c2
-rw-r--r--elf/pldd.c16
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 <drepper@gmail.com>
+
+ * 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 <liubov.dmitrieva@intel.com>
* 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);