aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2012-01-27 19:23:43 +0000
committerPedro Alves <palves@redhat.com>2012-01-27 19:23:43 +0000
commitbe07f1a20c962deb662b93209b4ca91bc8e5cbd8 (patch)
treec46c5b008a5c786ff58b86259640972d3cec1409 /gdb/gdbserver
parent8c85a4e2f7b1b536104ffcb95f843fb048c229e9 (diff)
downloadgdb-be07f1a20c962deb662b93209b4ca91bc8e5cbd8.zip
gdb-be07f1a20c962deb662b93209b4ca91bc8e5cbd8.tar.gz
gdb-be07f1a20c962deb662b93209b4ca91bc8e5cbd8.tar.bz2
2012-01-27 Pedro Alves <palves@redhat.com>
* 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.
Diffstat (limited to 'gdb/gdbserver')
-rw-r--r--gdb/gdbserver/ChangeLog11
-rw-r--r--gdb/gdbserver/linux-low.c40
-rw-r--r--gdb/gdbserver/linux-low.h3
-rw-r--r--gdb/gdbserver/linux-x86-low.c5
4 files changed, 26 insertions, 33 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 83af7f8..0aa5a83 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,14 @@
+2012-01-27 Pedro Alves <palves@redhat.com>
+
+ * 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 <jan.kratochvil@redhat.com>
* 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 45aeb73..0a8b3de 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 2befc48..3ba004c 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 5e4f87a..365cd52 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)
{