RTEMS  5.0.0
rtl-unresolved.h
Go to the documentation of this file.
1 /*
2  * COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
3  *
4  * The license and distribution terms for this file may be
5  * found in the file LICENSE in this distribution or at
6  * http://www.rtems.org/license/LICENSE.
7  */
52 #if !defined (_RTEMS_RTL_UNRESOLVED_H_)
53 #define _RTEMS_RTL_UNRESOLVED_H_
54 
55 #include <rtems.h>
56 #include <rtems/chain.h>
57 #include "rtl-obj-fwd.h"
58 
59 #ifdef __cplusplus
60 extern "C" {
61 #endif /* __cplusplus */
62 
67 typedef uint32_t rtems_rtl_word;
68 
73 {
78 
82 #define RTEMS_RTL_UNRESOLV_SYM_SEARCH_ARCHIVE (1 << 0)
83 #define RTEMS_RTL_UNRESOLV_SYM_HAS_ERROR (1 << 1)
94 typedef struct rtems_rtl_unresolv_symbol
95 {
96  uint16_t refs;
97  uint16_t flags;
98  uint16_t length;
99  const char name[];
101 
106 typedef struct rtems_rtl_unresolv_reloc
107 {
108  rtems_rtl_obj* obj;
109  uint16_t flags;
110  uint16_t name;
111  uint16_t sect;
112  rtems_rtl_word rel[3];
114 
118 typedef struct rtems_rtl_unresolv_rec
119 {
121  union
122  {
125  } rec;
127 
131 typedef struct rtems_rtl_unresolv_block
132 {
134  uint32_t recs;
137 
141 typedef struct rtems_rtl_unresolved
142 {
143  uint32_t marker;
144  size_t block_recs;
147 
157  void* data);
158 
169  size_t block_records);
170 
177 
182  void* data);
183 
197  const uint16_t flags,
198  const char* name,
199  const uint16_t sect,
200  const rtems_rtl_word* rel);
201 
205 void rtems_rtl_unresolved_resolve (void);
206 
216  const char* name,
217  const uint16_t sect,
218  const rtems_rtl_word* rel);
219 
225 
229 void rtems_rtl_unresolved_dump (void);
230 
231 #ifdef __cplusplus
232 }
233 #endif /* __cplusplus */
234 
235 #endif
Definition: rtl-unresolved.h:75
Definition: rtl-unresolved.h:107
Definition: chain.h:65
uint16_t flags
Definition: rtl-unresolved.h:110
bool rtems_rtl_unresolved_add(rtems_rtl_obj *obj, const uint16_t flags, const char *name, const uint16_t sect, const rtems_rtl_word *rel)
Definition: rtl-unresolved.c:525
void rtems_rtl_unresolved_table_close(rtems_rtl_unresolved *unresolved)
Definition: rtl-unresolved.c:487
rtems_rtl_unresolved_rtype
Definition: rtl-unresolved.h:72
bool rtems_rtl_unresolved_iterator(rtems_rtl_unresolv_rec *rec, void *data)
Definition: rtl-unresolved.h:157
Definition: rtl-unresolved.h:142
Definition: chain.h:83
Definition: rtl-obj.h:183
uint16_t name
Definition: rtl-unresolved.h:111
void rtems_rtl_unresolved_dump(void)
Definition: rtl-unresolved.c:727
uint16_t sect
Definition: rtl-unresolved.h:112
bool rtems_rtl_unresolved_table_open(rtems_rtl_unresolved *unresolved, size_t block_records)
Definition: rtl-unresolved.c:477
rtems_rtl_obj * obj
Definition: rtl-unresolved.h:109
struct rtems_rtl_unresolv_rec rtems_rtl_unresolv_rec
void rtems_rtl_unresolved_resolve(void)
Definition: rtl-unresolved.c:626
bool rtems_rtl_unresolved_iterate(rtems_rtl_unresolved_iterator iterator, void *data)
Definition: rtl-unresolved.c:499
Definition: rtl-unresolved.h:76
bool rtems_rtl_unresolved_remove(rtems_rtl_obj *obj, const char *name, const uint16_t sect, const rtems_rtl_word *rel)
Definition: rtl-unresolved.c:668
Chain API.
Definition: rtl-unresolved.h:95
struct rtems_rtl_unresolv_block rtems_rtl_unresolv_block
Definition: rtl-unresolved.h:119
rtems_rtl_word rel[3]
Definition: rtl-unresolved.h:113
void rtems_rtl_unresolved_set_archive_search(void)
Definition: rtl-unresolved.c:735
uint32_t rtems_rtl_word
Definition: rtl-unresolved.h:67
struct rtems_rtl_unresolved rtems_rtl_unresolved
Definition: rtl-unresolved.h:132
RTEMS Run-Time Linker ELF Headers.
Definition: rtl-unresolved.h:74
struct rtems_rtl_unresolv_symbol rtems_rtl_unresolv_symbol
struct rtems_rtl_unresolv_reloc rtems_rtl_unresolv_reloc