1/* Template to produce unique symbols.
2 Copyright (C) 2019-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/* This template produces a unique symbol definition for an explicit
20 template instantiation (without also incorporating a reference),
21 and an extern template declaration can be used to reference that
22 symbol from another object. The modid parameter is just a
23 placeholder to create different symbols (because it affects the
24 name mangling of the static value member). By convention, it
25 should match the number of the module that contains the
26 definition. */
27
28template <int modid>
29struct unique_symbol
30{
31 static int value;
32};
33
34template <int modid>
35int unique_symbol<modid>::value;
36

source code of glibc/elf/tst-dlopen-nodelete-reloc.h