1/*-
2 * Copyright 1996, 1997, 1998, 1999, 2000 John D. Polstra.
3 * Copyright 2003 Alexander Kabaev <kan@FreeBSD.ORG>.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 *    notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 *    notice, this list of conditions and the following disclaimer in the
13 *    documentation and/or other materials provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27#ifndef _RTLD_PATHS_H
28#define _RTLD_PATHS_H
29
30#undef _PATH_ELF_HINTS
31
32#ifndef _RTLD_COMPAT_LIB_SUFFIX
33#ifdef COMPAT_libcompat
34#define	_RTLD_COMPAT_LIB_SUFFIX	COMPAT_libcompat
35#else
36#define	_RTLD_COMPAT_LIB_SUFFIX	""
37#endif
38#endif
39
40#ifndef _RTLD_COMPAT_ENV_SUFFIX
41#ifdef COMPAT_LIBCOMPAT
42#define	_RTLD_COMPAT_ENV_SUFFIX	COMPAT_LIBCOMPAT "_"
43#else
44#define	_RTLD_COMPAT_ENV_SUFFIX	""
45#endif
46#endif
47
48#ifndef __PATH_ELF_HINTS
49#define	__PATH_ELF_HINTS(_lc)	"/var/run/ld-elf" _lc ".so.hints"
50#endif
51
52#ifndef _PATH_ELF_HINTS
53#define	_PATH_ELF_HINTS		__PATH_ELF_HINTS(_RTLD_COMPAT_LIB_SUFFIX)
54#endif
55
56#ifndef _PATH_LIBMAP_CONF
57#define	_PATH_LIBMAP_CONF	"/etc/libmap" _RTLD_COMPAT_LIB_SUFFIX ".conf"
58#endif
59
60#ifndef __BASENAME_RTLD
61#define	__BASENAME_RTLD(_lc)	"ld-elf" _lc ".so.1"
62#endif
63
64#ifndef _BASENAME_RTLD
65#define	_BASENAME_RTLD		__BASENAME_RTLD(_RTLD_COMPAT_LIB_SUFFIX)
66#endif
67
68#ifndef __PATH_RTLD
69#define	__PATH_RTLD(_lc)	"/libexec/" __BASENAME_RTLD(_lc)
70#endif
71
72#ifndef _PATH_RTLD
73#define	_PATH_RTLD		__PATH_RTLD(_RTLD_COMPAT_LIB_SUFFIX)
74#endif
75
76#ifndef STANDARD_LIBRARY_PATH
77#define	STANDARD_LIBRARY_PATH	"/lib" _RTLD_COMPAT_LIB_SUFFIX ":/usr/lib" _RTLD_COMPAT_LIB_SUFFIX
78#endif
79
80#ifndef LD_
81#define	LD_			"LD_" _RTLD_COMPAT_ENV_SUFFIX
82#endif
83
84#ifndef TOKEN_LIB
85#define	TOKEN_LIB		"lib" _RTLD_COMPAT_LIB_SUFFIX
86#endif
87
88#ifdef IN_RTLD
89extern const char *ld_elf_hints_default;
90extern const char *ld_path_libmap_conf;
91extern const char *ld_path_rtld;
92extern const char *ld_standard_library_path;
93extern const char *ld_env_prefix;
94#endif
95
96#endif /* _RTLD_PATHS_H */
97