RTEMS CPU Kit with SuperCore  4.11.3
rtl-unresolved.h
Go to the documentation of this file.
1 /*
2  * COPYRIGHT (c) 2012 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 "rtl-obj-fwd.h"
57 
58 #ifdef __cplusplus
59 extern "C" {
60 #endif /* __cplusplus */
61 
66 typedef uint32_t rtems_rtl_word_t;
67 
72 {
77 
84 {
85  uint16_t refs;
86  uint16_t length;
87  const char name[12];
89 
95 {
97  uint16_t flags;
98  uint16_t name;
99  uint16_t sect;
100  rtems_rtl_word_t rel[3];
102 
107 {
109  union
110  {
113  } rec;
115 
120 {
122  uint32_t recs;
125 
130 {
131  uint32_t marker;
132  size_t block_recs;
135 
145  void* data);
146 
157  size_t block_records);
158 
165 
170  void* data);
171 
185  const uint16_t flags,
186  const char* name,
187  const uint16_t sect,
188  const rtems_rtl_word_t* rel);
189 
193 void rtems_rtl_unresolved_resolve (void);
194 
204  const char* name,
205  const uint16_t sect,
206  const rtems_rtl_word_t* rel);
207 
208 #ifdef __cplusplus
209 }
210 #endif /* __cplusplus */
211 
212 #endif
rtems_chain_node link
Blocks are chained.
Definition: rtl-unresolved.h:121
This is used to manage each element (node) which is placed on a chain.
Definition: chain.h:65
uint16_t flags
Format specific flags.
Definition: rtl-unresolved.h:97
struct rtems_rtl_unresolv_rec_s rtems_rtl_unresolv_rec_t
Unresolved externals records.
The record is a name.
Definition: rtl-unresolved.h:74
uint16_t refs
The number of references to this name.
Definition: rtl-unresolved.h:85
bool rtems_rtl_unresolved_table_open(rtems_rtl_unresolved_t *unresolved, size_t block_records)
Open an unresolved relocation table.
Definition: rtl-unresolved.c:297
Unresolved externals symbols require the relocation records to be held and references.
Definition: rtl-unresolved.h:94
uint16_t sect
The target section.
Definition: rtl-unresolved.h:99
The records is empty.
Definition: rtl-unresolved.h:73
Unresolved blocks.
Definition: rtl-unresolved.h:119
bool rtems_rtl_unresolved_add(rtems_rtl_obj_t *obj, const uint16_t flags, const char *name, const uint16_t sect, const rtems_rtl_word_t *rel)
Add a relocation to the list of unresolved relocations.
Definition: rtl-unresolved.c:345
This is used to manage a chain.
Definition: chain.h:83
uint32_t rtems_rtl_word_t
Hack to work around machine size.
Definition: rtl-unresolved.h:66
The record is a relocation record.
Definition: rtl-unresolved.h:75
struct rtems_rtl_unresolv_name_s rtems_rtl_unresolv_name_t
Unresolved externals symbol names.
Unresolved externals records.
Definition: rtl-unresolved.h:106
rtems_rtl_unresolv_rec_t rec
The records.
Definition: rtl-unresolved.h:123
struct rtems_rtl_unresolv_block_s rtems_rtl_unresolv_block_t
Unresolved blocks.
uint16_t name
The symbol&#39;s name.
Definition: rtl-unresolved.h:98
uint16_t length
The length of this name.
Definition: rtl-unresolved.h:86
void rtems_rtl_unresolved_resolve(void)
Resolve the unresolved symbols.
Definition: rtl-unresolved.c:447
rtems_rtl_unresolved_rtype_e
The types of records in the blocks.
Definition: rtl-unresolved.h:71
void rtems_rtl_unresolved_table_close(rtems_rtl_unresolved_t *unresolved)
Close the table and erase the blocks.
Definition: rtl-unresolved.c:307
rtems_chain_control blocks
List of blocks.
Definition: rtl-unresolved.h:133
uint32_t recs
The number of records in the block.
Definition: rtl-unresolved.h:122
bool rtems_rtl_unresolved_iterator_t(rtems_rtl_unresolv_rec_t *rec, void *data)
The iterator function used to iterate over the unresolved table.
Definition: rtl-unresolved.h:144
RTL Object.
Definition: rtl-obj.h:156
rtems_rtl_unresolv_reloc_t reloc
the relocation record.
Definition: rtl-unresolved.h:112
bool rtems_rtl_unresolved_remove(rtems_rtl_obj_t *obj, const char *name, const uint16_t sect, const rtems_rtl_word_t *rel)
Remove a relocation from the list of unresolved relocations.
Definition: rtl-unresolved.c:460
bool rtems_rtl_unresolved_interate(rtems_rtl_unresolved_iterator_t iterator, void *data)
Iterate over the table of unresolved entries.
Definition: rtl-unresolved.c:319
struct rtems_rtl_unresolv_reloc_s rtems_rtl_unresolv_reloc_t
Unresolved externals symbols require the relocation records to be held and references.
Unresolved table holds the names and relocations.
Definition: rtl-unresolved.h:129
struct rtems_rtl_unresolved_s rtems_rtl_unresolved_t
Unresolved table holds the names and relocations.
rtems_rtl_unresolv_name_t name
The name, or.
Definition: rtl-unresolved.h:111
size_t block_recs
The records per blocks allocated.
Definition: rtl-unresolved.h:132
RTEMS Run-Time Linker ELF Headers.
Unresolved externals symbol names.
Definition: rtl-unresolved.h:83
rtems_rtl_obj_t * obj
The relocation&#39;s object file.
Definition: rtl-unresolved.h:96
enum rtems_rtl_unresolved_rtype_e rtems_rtl_unresolved_rtype_t
The types of records in the blocks.