blob: 2015b3577aaa4f3683499893031966c233d4e94f [file] [log] [blame]
Juan Cespedesd44c6b81998-09-25 14:48:42 +02001#if HAVE_CONFIG_H
2#include "config.h"
3#endif
4
Juan Cespedes273ea6d1998-03-14 23:02:40 +01005#include <sys/types.h>
6#include <string.h>
7#include <stdio.h>
8#include <errno.h>
9#include <stdlib.h>
10
11#include "ltrace.h"
12#include "options.h"
13#include "elf.h"
14
Juan Cespedes8cc1b9d2002-03-01 19:54:23 +010015struct process *
16open_program(char * filename) {
Juan Cespedes273ea6d1998-03-14 23:02:40 +010017 struct process * proc;
18 proc = malloc(sizeof(struct process));
19 if (!proc) {
20 perror("malloc");
21 exit(1);
22 }
23 proc->filename = filename;
24 proc->pid = 0;
Juan Cespedescac15c32003-01-31 18:58:58 +010025 proc->breakpoints = NULL;
Juan Cespedes273ea6d1998-03-14 23:02:40 +010026 proc->breakpoints_enabled = -1;
Juan Cespedes5b3ffdf2001-07-02 00:52:45 +020027 proc->callstack_depth = 0;
Juan Cespedes273ea6d1998-03-14 23:02:40 +010028 proc->breakpoint_being_enabled = NULL;
Juan Cespedes7186e2a2003-01-31 19:56:34 +010029 breakpoints_init(proc);
Juan Cespedes273ea6d1998-03-14 23:02:40 +010030 proc->next = NULL;
Juan Cespedes273ea6d1998-03-14 23:02:40 +010031
32 proc->next = list_of_processes;
33 list_of_processes = proc;
34 return proc;
35}
36
Juan Cespedes8cc1b9d2002-03-01 19:54:23 +010037void
38open_pid(pid_t pid, int verbose) {
Juan Cespedes273ea6d1998-03-14 23:02:40 +010039 struct process * proc;
40 char * filename;
41
Juan Cespedes35d70631998-03-15 14:05:40 +010042 if (trace_pid(pid)<0) {
Juan Cespedes8cc1b9d2002-03-01 19:54:23 +010043 fprintf(stderr, "Cannot attach to pid %u: %s\n", pid, strerror(errno));
Juan Cespedes35d70631998-03-15 14:05:40 +010044 return;
45 }
46
Juan Cespedes273ea6d1998-03-14 23:02:40 +010047 filename = pid2name(pid);
48
Juan Cespedes35d70631998-03-15 14:05:40 +010049#if 0
Juan Cespedes273ea6d1998-03-14 23:02:40 +010050 if (!filename) {
51 if (verbose) {
52 fprintf(stderr, "Cannot trace pid %u: %s\n", pid, strerror(errno));
53 }
54 return;
55 }
Juan Cespedes35d70631998-03-15 14:05:40 +010056#endif
Juan Cespedes273ea6d1998-03-14 23:02:40 +010057
58 proc = open_program(filename);
59 proc->pid = pid;
60}