Warning: This file is not a C or C++ file. It does not have highlighting.
1 | /* Optional code to distinguish library flavours. |
---|---|
2 | Copyright (C) 1998-2022 Free Software Foundation, Inc. |
3 | This file is part of the GNU C Library. |
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 |
16 | License along with the GNU C Library; if not, see |
17 | <https://www.gnu.org/licenses/>. */ |
18 | |
19 | #ifndef _DL_LIBRECON_H |
20 | |
21 | #include <sysdeps/unix/sysv/linux/dl-librecon.h> |
22 | |
23 | #define DISTINGUISH_LIB_VERSIONS \ |
24 | do \ |
25 | { \ |
26 | /* We have to find out whether the binary is linked against \ |
27 | libc 5 or glibc. We do this by looking at all the DT_NEEDED \ |
28 | entries. If one is libc.so.5 this is a libc 5 linked binary. */ \ |
29 | if (main_map->l_info[DT_NEEDED]) \ |
30 | { \ |
31 | /* We have dependencies. */ \ |
32 | const ElfW(Dyn) *d; \ |
33 | const char *strtab; \ |
34 | \ |
35 | strtab = (const char *) D_PTR (main_map, l_info[DT_STRTAB]); \ |
36 | \ |
37 | for (d = main_map->l_ld; d->d_tag != DT_NULL; ++d) \ |
38 | if (d->d_tag == DT_NEEDED \ |
39 | && strcmp (strtab + d->d_un.d_val, "libc.so.5") == 0) \ |
40 | break; \ |
41 | \ |
42 | /* We print a `5' or `6' depending on the outcome. */ \ |
43 | _dl_printf (d->d_tag != DT_NULL ? "5\n" : "6\n"); \ |
44 | } \ |
45 | } \ |
46 | while (0) |
47 | |
48 | /* Recognizing extra environment variables. */ |
49 | #define EXTRA_LD_ENVVARS \ |
50 | case 15: \ |
51 | if (memcmp (envline, "LIBRARY_VERSION", 15) == 0) \ |
52 | GLRO(dl_correct_cache_id) = envline[16] == '5' ? 2 : 3; \ |
53 | break; \ |
54 | |
55 | /* Extra unsecure variables. The names are all stuffed in a single |
56 | string which means they have to be terminated with a '\0' explicitly. */ |
57 | #define EXTRA_UNSECURE_ENVVARS \ |
58 | "LD_AOUT_LIBRARY_PATH\0" \ |
59 | "LD_AOUT_PRELOAD\0" |
60 | |
61 | #endif /* dl-librecon.h */ |
62 |
Warning: This file is not a C or C++ file. It does not have highlighting.