1 /* Check DTAUDIT and vDSO interaction.
2 Copyright (C) 2021-2023 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
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.
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.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
27 startswith (const char *str
, const char *pre
)
29 size_t lenpre
= strlen (pre
);
30 size_t lenstr
= strlen (str
);
31 return lenstr
< lenpre
? false : memcmp (pre
, str
, lenpre
) == 0;
35 la_version (unsigned int version
)
41 la_objopen (struct link_map
*map
, Lmid_t lmid
, uintptr_t *cookie
)
43 /* The linux-gate.so is placed at a fixed address, thus l_addr being 0,
44 and it might be the value reported as the AT_SYSINFO_EHDR. */
45 if (map
->l_addr
== 0 && startswith (map
->l_name
, "linux-gate.so"))
46 fprintf (stderr
, "vdso found: %p\n", NULL
);
47 else if (map
->l_addr
== getauxval (AT_SYSINFO_EHDR
))
48 fprintf (stderr
, "vdso found: %p\n", (void*) map
->l_addr
);