From: Pedro Alves Date: Fri, 27 Jan 2012 19:23:43 +0000 (+0000) Subject: 2012-01-27 Pedro Alves X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=be07f1a20c962deb662b93209b4ca91bc8e5cbd8;p=binutils-gdb.git 2012-01-27 Pedro Alves * linux-low.c (linux_child_pid_to_exec_file): Delete. (elf_64_file_p): Make static. (linux_pid_exe_is_elf_64_file): New. * linux-low.h (linux_child_pid_to_exec_file, elf_64_file_p): Delete declarations. (linux_pid_exe_is_elf_64_file): Declare. * linux-x86-low.c (x86_arch_setup): Use linux_pid_exe_is_elf_64_file. --- diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 83af7f8b8a4..0aa5a834f10 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,14 @@ +2012-01-27 Pedro Alves + + * linux-low.c (linux_child_pid_to_exec_file): Delete. + (elf_64_file_p): Make static. + (linux_pid_exe_is_elf_64_file): New. + * linux-low.h (linux_child_pid_to_exec_file, elf_64_file_p): + Delete declarations. + (linux_pid_exe_is_elf_64_file): Declare. + * linux-x86-low.c (x86_arch_setup): Use + linux_pid_exe_is_elf_64_file. + 2012-01-25 Jan Kratochvil * linux-low.c (linux_wait_for_event_1): Rename to ... diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index 45aeb731c75..0a8b3de83c4 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -186,32 +186,6 @@ static int linux_event_pipe[2] = { -1, -1 }; static void send_sigstop (struct lwp_info *lwp); static void wait_for_sigstop (struct inferior_list_entry *entry); -/* Accepts an integer PID; Returns a string representing a file that - can be opened to get info for the child process. - Space for the result is malloc'd, caller must free. */ - -char * -linux_child_pid_to_exec_file (int pid) -{ - char *name1, *name2; - - name1 = xmalloc (MAXPATHLEN); - name2 = xmalloc (MAXPATHLEN); - memset (name2, 0, MAXPATHLEN); - - sprintf (name1, "/proc/%d/exe", pid); - if (readlink (name1, name2, MAXPATHLEN) > 0) - { - free (name1); - return name2; - } - else - { - free (name2); - return name1; - } -} - /* Return non-zero if HEADER is a 64-bit ELF file. */ static int @@ -228,7 +202,7 @@ elf_64_header_p (const Elf64_Ehdr *header) zero if the file is not a 64-bit ELF file, and -1 if the file is not accessible or doesn't exist. */ -int +static int elf_64_file_p (const char *file) { Elf64_Ehdr header; @@ -248,6 +222,18 @@ elf_64_file_p (const char *file) return elf_64_header_p (&header); } +/* Accepts an integer PID; Returns true if the executable PID is + running is a 64-bit ELF file.. */ + +int +linux_pid_exe_is_elf_64_file (int pid) +{ + char file[MAXPATHLEN]; + + sprintf (file, "/proc/%d/exe", pid); + return elf_64_file_p (file); +} + static void delete_lwp (struct lwp_info *lwp) { diff --git a/gdb/gdbserver/linux-low.h b/gdb/gdbserver/linux-low.h index 2befc48ada6..3ba004c1ea9 100644 --- a/gdb/gdbserver/linux-low.h +++ b/gdb/gdbserver/linux-low.h @@ -265,8 +265,7 @@ struct lwp_info extern struct inferior_list all_lwps; -char *linux_child_pid_to_exec_file (int pid); -int elf_64_file_p (const char *file); +int linux_pid_exe_is_elf_64_file (int pid); void linux_attach_lwp (unsigned long pid); struct lwp_info *find_lwp_pid (ptid_t ptid); diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c index 5e4f87ab151..365cd52d90a 100644 --- a/gdb/gdbserver/linux-x86-low.c +++ b/gdb/gdbserver/linux-x86-low.c @@ -1106,10 +1106,7 @@ x86_arch_setup (void) { #ifdef __x86_64__ int pid = pid_of (get_thread_lwp (current_inferior)); - char *file = linux_child_pid_to_exec_file (pid); - int use_64bit = elf_64_file_p (file); - - free (file); + int use_64bit = linux_pid_exe_is_elf_64_file (pid); if (use_64bit < 0) {