source: rtems/cpukit/include/dlfcn.h @ 21275b58

5
Last change on this file since 21275b58 was 2afb22b, checked in by Chris Johns <chrisj@…>, on 12/23/17 at 07:18:56

Remove make preinstall

A speciality of the RTEMS build system was the make preinstall step. It
copied header files from arbitrary locations into the build tree. The
header files were included via the -Bsome/build/tree/path GCC command
line option.

This has at least seven problems:

  • The make preinstall step itself needs time and disk space.
  • Errors in header files show up in the build tree copy. This makes it hard for editors to open the right file to fix the error.
  • There is no clear relationship between source and build tree header files. This makes an audit of the build process difficult.
  • The visibility of all header files in the build tree makes it difficult to enforce API barriers. For example it is discouraged to use BSP-specifics in the cpukit.
  • An introduction of a new build system is difficult.
  • Include paths specified by the -B option are system headers. This may suppress warnings.
  • The parallel build had sporadic failures on some hosts.

This patch removes the make preinstall step. All installed header
files are moved to dedicated include directories in the source tree.
Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc,
etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g.
erc32, imx, qoriq, etc.

The new cpukit include directories are:

  • cpukit/include
  • cpukit/score/cpu/@RTEMS_CPU@/include
  • cpukit/libnetworking

The new BSP include directories are:

  • bsps/include
  • bsps/@RTEMS_CPU@/include
  • bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include

There are build tree include directories for generated files.

The include directory order favours the most general header file, e.g.
it is not possible to override general header files via the include path
order.

The "bootstrap -p" option was removed. The new "bootstrap -H" option
should be used to regenerate the "headers.am" files.

Update #3254.

  • Property mode set to 100644
File size: 3.4 KB
Line 
1/*      $NetBSD: dlfcn.h,v 1.21 2010/01/07 07:35:35 skrll Exp $ */
2
3/*-
4 * Copyright (c) 1998 The NetBSD Foundation, Inc.
5 * All rights reserved.
6 *
7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Paul Kranenburg.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 *    notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 *    notice, this list of conditions and the following disclaimer in the
17 *    documentation and/or other materials provided with the distribution.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 */
31
32#ifndef _DLFCN_H_
33#define _DLFCN_H_
34
35//#include <sys/featuretest.h>
36#include <sys/cdefs.h>
37
38#if defined(_NETBSD_SOURCE)
39typedef struct _dl_info {
40        const char      *dli_fname;     /* File defining the symbol */
41        void            *dli_fbase;     /* Base address */
42        const char      *dli_sname;     /* Symbol name */
43        const void      *dli_saddr;     /* Symbol address */
44} Dl_info;
45#endif /* defined(_NETBSD_SOURCE) */
46
47/*
48 * User interface to the run-time linker.
49 */
50__BEGIN_DECLS
51void    *dlopen(const char *, int);
52int     dlclose(void *);
53void    *dlsym(void * __restrict, const char * __restrict);
54#if defined(_NETBSD_SOURCE)
55int     dladdr(void * __restrict, Dl_info * __restrict);
56int     dlctl(void *, int, void *);
57#endif
58int     dlinfo(void *, int, void *);
59const char *dlerror(void);
60__END_DECLS
61
62/* Values for dlopen `mode'. */
63#define RTLD_LAZY       1
64#define RTLD_NOW        2
65#define RTLD_GLOBAL     0x100           /* Allow global searches in object */
66#define RTLD_LOCAL      0x200
67#if defined(_NETBSD_SOURCE)
68#define DL_LAZY         RTLD_LAZY       /* Compat */
69#endif
70
71/*
72 * Special handle arguments for dlsym().
73 */
74#define RTLD_NEXT       ((void *) -1)   /* Search subsequent objects. */
75#define RTLD_DEFAULT    ((void *) -2)   /* Use default search algorithm. */
76#define RTLD_SELF       ((void *) -3)   /* Search the caller itself. */
77
78/*
79 * dlctl() commands
80 */
81#if defined(_NETBSD_SOURCE)
82#define DL_GETERRNO     1
83#define DL_GETSYMBOL    2
84#if 0
85#define DL_SETSRCHPATH  x
86#define DL_GETLIST      x
87#define DL_GETREFCNT    x
88#define DL_GETLOADADDR  x
89#endif /* 0 */
90#endif /* defined(_NETBSD_SOURCE) */
91
92/*
93 * dlinfo() commands
94 *
95 * From Solaris: http://docs.sun.com/app/docs/doc/816-5168/dlinfo-3c?a=view
96 */
97#define RTLD_DI_UNRESOLVED      10
98#if defined(_NETBSD_SOURCE)
99#define RTLD_DI_LINKMAP         3
100#if 0
101#define RTLD_DI_ARGSINFO        1
102#define RTLD_DI_CONFIGADDR      2
103#define RTLD_DI_LMID            4
104#define RTLD_DI_SERINFO         5
105#define RTLD_DI_SERINFOSIZE     6
106#define RTLD_DI_ORIGIN          7
107#define RTLD_DI_GETSIGNAL       8
108#define RTLD_DI_SETSIGNAL       9
109#endif
110#endif /* _NETBSD_SOURCE */
111
112#endif /* !defined(_DLFCN_H_) */
Note: See TracBrowser for help on using the repository browser.