]> git.ipfire.org Git - thirdparty/glibc.git/blame - nptl_db/td_ta_new.c
test-container: Fix "unused code" warnings on HURD
[thirdparty/glibc.git] / nptl_db / td_ta_new.c
CommitLineData
76a50749 1/* Attach to target process.
581c785b 2 Copyright (C) 1999-2022 Free Software Foundation, Inc.
76a50749 3 This file is part of the GNU C Library.
76a50749
UD
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
59ba27a6 16 License along with the GNU C Library; if not, see
5a82c748 17 <https://www.gnu.org/licenses/>. */
76a50749
UD
18
19#include <stddef.h>
20#include <stdlib.h>
21#include <string.h>
22#include <version.h>
23
24#include "thread_dbP.h"
25
26
27/* Datatype for the list of known thread agents. Normally there will
28 be exactly one so we don't spend much though on making it fast. */
29LIST_HEAD (__td_agent_list);
30
31
32td_err_e
33td_ta_new (struct ps_prochandle *ps, td_thragent_t **ta)
34{
76a50749
UD
35 psaddr_t versaddr;
36 char versbuf[sizeof (VERSION)];
37
38 LOG ("td_ta_new");
39
76a50749 40 /* Check whether the versions match. */
b369cc4e 41 if (td_lookup (ps, SYM___nptl_version, &versaddr) != PS_OK)
7f08f55a 42 return TD_NOLIBTHREAD;
76a50749
UD
43 if (ps_pdread (ps, versaddr, versbuf, sizeof (versbuf)) != PS_OK)
44 return TD_ERR;
45
7f08f55a 46 if (memcmp (versbuf, VERSION, sizeof VERSION) != 0)
76a50749
UD
47 /* Not the right version. */
48 return TD_VERSION;
49
50 /* Fill in the appropriate information. */
7f08f55a 51 *ta = (td_thragent_t *) calloc (1, sizeof (td_thragent_t));
76a50749
UD
52 if (*ta == NULL)
53 return TD_MALLOC;
54
55 /* Store the proc handle which we will pass to the callback functions
56 back into the debugger. */
57 (*ta)->ph = ps;
58
76a50749
UD
59 /* Now add the new agent descriptor to the list. */
60 list_add (&(*ta)->list, &__td_agent_list);
61
62 return TD_OK;
63}