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.
This commit is contained in:
Pedro Alves 2012-01-27 19:23:43 +00:00
parent 8c85a4e2f7
commit be07f1a20c
4 changed files with 26 additions and 33 deletions

View File

@ -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 ...

View File

@ -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)
{

View File

@ -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);

View File

@ -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)
{