RTEMS CPU Kit with SuperCore  4.11.3
Data Structures | Typedefs | Functions
rtl-unresolved.c File Reference

RTEMS Run-Time Linker Object File Unresolved Relocations Table. More...

#include <errno.h>
#include <inttypes.h>
#include <stdlib.h>
#include <stdio.h>
#include <rtems/rtl/rtl.h>
#include "rtl-error.h"
#include "rtl-unresolved.h"
#include "rtl-trace.h"
Include dependency graph for rtl-unresolved.c:

Data Structures

struct  rtems_rtl_unresolved_reloc_data_s
 Struct to pass relocation data in the interator. More...
 

Typedefs

typedef struct rtems_rtl_unresolved_reloc_data_s rtems_rtl_unresolved_reloc_data_t
 Struct to pass relocation data in the interator.
 

Functions

bool rtems_rtl_unresolved_table_open (rtems_rtl_unresolved_t *unresolved, size_t block_recs)
 Open an unresolved relocation table. More...
 
void rtems_rtl_unresolved_table_close (rtems_rtl_unresolved_t *unresolved)
 Close the table and erase the blocks. More...
 
bool rtems_rtl_unresolved_interate (rtems_rtl_unresolved_iterator_t iterator, void *data)
 Iterate over the table of unresolved entries.
 
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. More...
 
void rtems_rtl_unresolved_resolve (void)
 Resolve the unresolved symbols.
 
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. More...
 

Detailed Description

RTEMS Run-Time Linker Object File Unresolved Relocations Table.

Function Documentation

◆ rtems_rtl_unresolved_add()

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.

Parameters
unresolvedThe unresolved symbol table.
objThe object table the symbols are for.
flagsFormat specific flags.
nameThe symbol name the relocation references.
sectThe target section number the relocation references.
relThe format specific relocation data.
Return values
trueThe relocation has been added.
falseThe relocation could not be added.

◆ rtems_rtl_unresolved_remove()

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.

Parameters
unresolvedThe unresolved symbol table.
objThe object table the symbols are for.
esymsThe exported symbol table.
sizeThe size of the table in bytes.

References rtems_rtl_unresolved().

◆ rtems_rtl_unresolved_table_close()

void rtems_rtl_unresolved_table_close ( rtems_rtl_unresolved_t unresolved)

Close the table and erase the blocks.

Parameters
unreolvedClose the unresolved table.

References rtems_rtl_unresolved_s::blocks, rtems_chain_first(), and rtems_chain_is_tail().

◆ rtems_rtl_unresolved_table_open()

bool rtems_rtl_unresolved_table_open ( rtems_rtl_unresolved_t unresolved,
size_t  block_records 
)

Open an unresolved relocation table.

Parameters
unresolvThe unresolved table to open.
block_recordsThe number of records per block allocated.
Return values
trueThe table is open.
falseThe unresolved relocation table could not created. The RTL error has the error.

References rtems_rtl_unresolved_s::block_recs, rtems_rtl_unresolved_s::blocks, and rtems_chain_initialize_empty().