Changeset f59d435d in rtems


Ignore:
Timestamp:
Apr 12, 2018, 7:46:49 AM (16 months ago)
Author:
Chris Johns <chrisj@…>
Branches:
master
Children:
696b9121
Parents:
86e79d7
git-author:
Chris Johns <chrisj@…> (04/12/18 07:46:49)
git-committer:
Chris Johns <chrisj@…> (04/12/18 07:57:40)
Message:

libdl: Remove _t from all structures as this is reserved for the standards

Location:
cpukit
Files:
46 edited

Legend:

Unmodified
Added
Removed
  • cpukit/include/link_elf.h

    r86e79d7 rf59d435d  
    7171 * add link map to the list.
    7272 */
    73 int _rtld_linkmap_add (rtems_rtl_obj_t* obj);
     73int _rtld_linkmap_add (rtems_rtl_obj* obj);
    7474
    7575/*
    7676 * Remove link map from the list.
    7777 */
    78 void _rtld_linkmap_delete (rtems_rtl_obj_t* obj);
     78void _rtld_linkmap_delete (rtems_rtl_obj* obj);
    7979#endif  /* _LINK_ELF_H_ */
  • cpukit/include/rtems/rtl/rap.h

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2013 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2013, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    4343 * The module iterator handle.
    4444 */
    45 typedef bool (*rtems_rap_iterator_t) (void* handle);
     45typedef bool (*rtems_rap_iterator) (void* handle);
    4646
    4747/**
     
    7979 * @retval false The iterator function returned false..
    8080 */
    81 bool rtems_rap_iterate (rtems_rap_iterator_t iterator);
     81bool rtems_rap_iterate (rtems_rap_iterator iterator);
    8282
    8383/**
  • cpukit/include/rtems/rtl/rtl-allocator.h

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    3131 *       leave the tags with specific access properties to the module data
    3232 */
    33 enum rtems_rtl_alloc_tags_e {
     33enum rtems_rtl_alloc_tags {
    3434  RTEMS_RTL_ALLOC_OBJECT,     /**< A generic memory object. */
    3535  RTEMS_RTL_ALLOC_SYMBOL,     /**< Memory used for symbols. */
     
    4343 * The allocator tag type.
    4444 */
    45 typedef enum rtems_rtl_alloc_tags_e rtems_rtl_alloc_tag_t;
     45typedef enum rtems_rtl_alloc_tags rtems_rtl_alloc_tag;
    4646
    4747/**
     
    6464 *             not used if deleting or freeing a previous allocation.
    6565 */
    66 typedef void (*rtems_rtl_allocator_t)(bool                  allocate,
    67                                       rtems_rtl_alloc_tag_t tag,
    68                                       void**                address,
    69                                       size_t                size);
     66typedef void (*rtems_rtl_allocator)(bool                allocate,
     67                                    rtems_rtl_alloc_tag tag,
     68                                    void**              address,
     69                                    size_t              size);
    7070
    7171/**
    7272 * The allocator data.
    7373 */
    74 struct rtems_rtl_alloc_data_s {
     74struct rtems_rtl_alloc_data {
    7575  /**< The memory allocator handler. */
    76   rtems_rtl_allocator_t allocator;
     76  rtems_rtl_allocator allocator;
    7777  /**< The indirect pointer chains. */
    7878  rtems_chain_control indirects[RTEMS_RTL_ALLOC_TAGS];
    7979};
    8080
    81 typedef struct rtems_rtl_alloc_data_s rtems_rtl_alloc_data_t;
     81typedef struct rtems_rtl_alloc_data rtems_rtl_alloc_data;
    8282
    8383/**
     
    8686 * @param data The data to initialise.
    8787 */
    88 void rtems_rtl_alloc_initialise (rtems_rtl_alloc_data_t* data);
     88void rtems_rtl_alloc_initialise (rtems_rtl_alloc_data* data);
    8989
    9090/**
     
    9797 * @return void* The memory address or NULL is not memory available.
    9898 */
    99 void* rtems_rtl_alloc_new (rtems_rtl_alloc_tag_t tag, size_t size, bool zero);
     99void* rtems_rtl_alloc_new (rtems_rtl_alloc_tag tag, size_t size, bool zero);
    100100
    101101/**
     
    105105 * @param address The memory address to delete. A NULL is ignored.
    106106 */
    107 void rtems_rtl_alloc_del (rtems_rtl_alloc_tag_t tag, void* address);
     107void rtems_rtl_alloc_del (rtems_rtl_alloc_tag tag, void* address);
    108108
    109109/**
     
    114114 *
    115115 * @param handler The handler to use as the allocator.
    116  * @return rtems_rtl_alloc_handler_t The previous handler.
     116 * @return rtems_rtl_alloc_handler The previous handler.
    117117 */
    118 rtems_rtl_allocator_t rtems_rtl_alloc_hook (rtems_rtl_allocator_t handler);
     118rtems_rtl_allocator rtems_rtl_alloc_hook (rtems_rtl_allocator handler);
    119119
    120120/**
     
    125125 * @param size The size of the allocation.
    126126 */
    127 void rtems_rtl_alloc_indirect_new (rtems_rtl_alloc_tag_t tag,
    128                                    rtems_rtl_ptr_t*      handle,
    129                                    size_t                size);
     127void rtems_rtl_alloc_indirect_new (rtems_rtl_alloc_tag tag,
     128                                   rtems_rtl_ptr*      handle,
     129                                   size_t              size);
    130130
    131131/**
     
    135135 * @param handle The handle to free the memory from.
    136136 */
    137 void rtems_rtl_alloc_indirect_del (rtems_rtl_alloc_tag_t tag,
    138                                    rtems_rtl_ptr_t*      handle);
     137void rtems_rtl_alloc_indirect_del (rtems_rtl_alloc_tag tag,
     138                                   rtems_rtl_ptr*      handle);
    139139
    140140/**
  • cpukit/include/rtems/rtl/rtl-fwd.h

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    2424 * The forward declaration of the obj structure.
    2525 */
    26 struct rtems_rtl_data_s;
    27 typedef struct rtems_rtl_data_s rtems_rtl_data_t;
     26struct rtems_rtl_data;
     27typedef struct rtems_rtl_data rtems_rtl_data;
    2828
    2929#ifdef __cplusplus
  • cpukit/include/rtems/rtl/rtl-indirect-ptr.h

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    1212 *
    1313 * @brief RTEMS Run-Time Linker Indirect Pointer Management allows memory
    14  *        compaction in the allocator. 
     14 *        compaction in the allocator.
    1515 */
    1616
     
    2727 * The RTL Indirect pointer.
    2828 */
    29 struct rtems_rtl_ptr_s {
     29struct rtems_rtl_ptr {
    3030  rtems_chain_node node;     /**< Indirect pointers are held on lists. */
    3131  void*            pointer;  /**< The actual pointer. */
    3232};
    3333
    34 typedef struct rtems_rtl_ptr_s rtems_rtl_ptr_t;
     34typedef struct rtems_rtl_ptr rtems_rtl_ptr;
    3535
    3636/**
    3737 * The RTL Indirect size and pointer.
    3838 */
    39 struct rtems_rtl_sptr_s {
    40   rtems_rtl_ptr_t  ptr;      /**< The indirect pointer. */
    41   size_t           size;     /**< The size of the memory block. */
    42 };
    43 
    44 typedef struct rtems_rtl_sptr_s rtems_rtl_sptr_t;
     39struct rtems_rtl_sptr {
     40  rtems_rtl_ptr  ptr;      /**< The indirect pointer. */
     41  size_t         size;     /**< The size of the memory block. */
     42};
     43
     44typedef struct rtems_rtl_sptr rtems_rtl_sptr;
    4545
    4646/**
     
    5050 *       used by applications.
    5151 */
    52 struct rtems_rtl_ptr_chain_s {
     52struct rtems_rtl_ptr_chain {
    5353  rtems_chain_node node;  /**< Chain of indirect pointers. */
    54   rtems_rtl_ptr_t  ptr;   /**< The indirect pointer. */
    55 };
    56 
    57 typedef struct rtems_rtl_ptr_chain_s rtems_rtl_ptr_chain_t;
     54  rtems_rtl_ptr    ptr;   /**< The indirect pointer. */
     55};
     56
     57typedef struct rtems_rtl_ptr_chain rtems_rtl_ptr_chain;
    5858
    5959/**
     
    6363 *       used by applications.
    6464 */
    65 struct rtems_rtl_sptr_chain_s {
    66   rtems_chain_node node;  /**< Chain of indirect pointers. */
    67   rtems_rtl_sptr_t  ptr;  /**< The indirect pointer. */
    68 };
    69 
    70 typedef struct rtems_rtl_sptr_chain_s rtems_rtl_sptr_chain_t;
     65struct rtems_rtl_sptr_chain {
     66  rtems_chain_node node; /**< Chain of indirect pointers. */
     67  rtems_rtl_sptr   ptr;  /**< The indirect pointer. */
     68};
     69
     70typedef struct rtems_rtl_sptr_chain rtems_rtl_sptr_chain;
    7171
    7272/**
     
    7676 * @return void* The pointer held in the handle.
    7777 */
    78 static inline void* rtems_rtl_ptr_get (rtems_rtl_ptr_t* handle)
     78static inline void* rtems_rtl_ptr_get (rtems_rtl_ptr* handle)
    7979{
    8080  return handle->pointer;
     
    8787 * @param pointer The pointer to set in the handle.
    8888 */
    89 static inline void rtems_rtl_ptr_set (rtems_rtl_ptr_t* handle, void* pointer)
     89static inline void rtems_rtl_ptr_set (rtems_rtl_ptr* handle, void* pointer)
    9090{
    9191  handle->pointer = pointer;
     
    9797 * @param handle The handle to initialise.
    9898 */
    99 static inline void rtems_rtl_ptr_init (rtems_rtl_ptr_t* handle)
     99static inline void rtems_rtl_ptr_init (rtems_rtl_ptr* handle)
    100100{
    101101  rtems_chain_set_off_chain (&handle->node);
     
    109109 * @return bool True if the pointer is NULL.
    110110 */
    111 static inline bool rtems_rtl_ptr_null (rtems_rtl_ptr_t* handle)
     111static inline bool rtems_rtl_ptr_null (rtems_rtl_ptr* handle)
    112112{
    113113  return handle->pointer == NULL;
     
    121121 * @param dst The destination handle to receive the pointer.
    122122 */
    123 static inline void rtems_rtl_ptr_move (rtems_rtl_ptr_t* dst, rtems_rtl_ptr_t* src)
     123static inline void rtems_rtl_ptr_move (rtems_rtl_ptr* dst, rtems_rtl_ptr* src)
    124124{
    125125  /*
     
    147147 * @return void* The pointer held in the handle.
    148148 */
    149 static inline void* rtems_rtl_sptr_get (rtems_rtl_sptr_t* handle)
     149static inline void* rtems_rtl_sptr_get (rtems_rtl_sptr* handle)
    150150{
    151151  return rtems_rtl_ptr_get (&handle->ptr);
     
    158158 * @param pointer The pointer to set in the handle.
    159159 */
    160 static inline void rtems_rtl_sptr_set (rtems_rtl_sptr_t* handle, void* pointer)
     160static inline void rtems_rtl_sptr_set (rtems_rtl_sptr* handle, void* pointer)
    161161{
    162162  rtems_rtl_ptr_set (&handle->ptr, pointer);
     
    168168 * @param handle The handle to initialise.
    169169 */
    170 static inline void rtems_rtl_sptr_init (rtems_rtl_sptr_t* handle)
     170static inline void rtems_rtl_sptr_init (rtems_rtl_sptr* handle)
    171171{
    172172  rtems_rtl_ptr_init (&handle->ptr);
     
    180180 * @return bool True if the pointer is NULL.
    181181 */
    182 static inline bool rtems_rtl_sptr_null (rtems_rtl_sptr_t* handle)
     182static inline bool rtems_rtl_sptr_null (rtems_rtl_sptr* handle)
    183183{
    184184  return rtems_rtl_ptr_null (&handle->ptr);
     
    192192 * @param dst The destination handle to receive the pointer.
    193193 */
    194 static inline void rtems_rtl_sptr_move (rtems_rtl_sptr_t* dst, rtems_rtl_sptr_t* src)
     194static inline void rtems_rtl_sptr_move (rtems_rtl_sptr* dst, rtems_rtl_sptr* src)
    195195{
    196196  rtems_rtl_ptr_move (&dst->ptr, &src->ptr);
     
    205205 * @return size_t The size_t.
    206206 */
    207 static inline size_t rtems_rtl_sptr_get_size (rtems_rtl_sptr_t* handle)
     207static inline size_t rtems_rtl_sptr_get_size (rtems_rtl_sptr* handle)
    208208{
    209209  return handle->size;
     
    216216 * @param size The size to set..
    217217 */
    218 static inline void rtems_rtl_sptr_set_size (rtems_rtl_sptr_t* handle, size_t size)
     218static inline void rtems_rtl_sptr_set_size (rtems_rtl_sptr* handle, size_t size)
    219219{
    220220  handle->size = size;
  • cpukit/include/rtems/rtl/rtl-obj-cache.h

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    5151 * The buffer cache.
    5252 */
    53 typedef struct rtems_rtl_obj_cache_s
     53typedef struct rtems_rtl_obj_cache
    5454{
    5555  int      fd;        /**< The file descriptor of the data in the cache. */
     
    6060                       * smaller than the cache file. */
    6161  uint8_t* buffer;    /**< The buffer */
    62 } rtems_rtl_obj_cache_t;
     62} rtems_rtl_obj_cache;
    6363
    6464/**
     
    7171 * @retval false The cache is not open. The RTL error is set.
    7272 */
    73 bool rtems_rtl_obj_cache_open (rtems_rtl_obj_cache_t* cache, size_t size);
     73bool rtems_rtl_obj_cache_open (rtems_rtl_obj_cache* cache, size_t size);
    7474
    7575/**
     
    7878 * @param cache The cache to close.
    7979 */
    80 void rtems_rtl_obj_cache_close (rtems_rtl_obj_cache_t* cache);
     80void rtems_rtl_obj_cache_close (rtems_rtl_obj_cache* cache);
    8181
    8282/**
     
    8585 * @param cache The cache to flush.
    8686 */
    87 void rtems_rtl_obj_cache_flush (rtems_rtl_obj_cache_t* cache);
     87void rtems_rtl_obj_cache_flush (rtems_rtl_obj_cache* cache);
    8888
    8989/**
     
    103103 * @retval false The read failed and the RTL error has been set.
    104104 */
    105 bool rtems_rtl_obj_cache_read (rtems_rtl_obj_cache_t* cache,
    106                                int                    fd,
    107                                off_t                  offset,
    108                                void**                 buffer,
    109                                size_t*                length);
     105bool rtems_rtl_obj_cache_read (rtems_rtl_obj_cache* cache,
     106                               int                  fd,
     107                               off_t                offset,
     108                               void**               buffer,
     109                               size_t*              length);
    110110
    111111/**
     
    120120 * @retval false The read failed and the RTL error has been set.
    121121 */
    122 bool rtems_rtl_obj_cache_read_byval (rtems_rtl_obj_cache_t* cache,
    123                                      int                    fd,
    124                                      off_t                  offset,
    125                                      void*                  buffer,
    126                                      size_t                 length);
     122bool rtems_rtl_obj_cache_read_byval (rtems_rtl_obj_cache* cache,
     123                                     int                  fd,
     124                                     off_t                offset,
     125                                     void*                buffer,
     126                                     size_t               length);
    127127
    128128#ifdef __cplusplus
  • cpukit/include/rtems/rtl/rtl-obj-comp.h

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    4444 * The compressed file.
    4545 */
    46 typedef struct rtems_rtl_obj_cpmp_s
     46typedef struct rtems_rtl_obj_cpmp
    4747{
    48   rtems_rtl_obj_cache_t* cache;       /**< The cache provides the input
     48  rtems_rtl_obj_cache* cache;       /**< The cache provides the input
    4949                                       *   buffer. */
    50   int                    fd;          /**< The file descriptor. */
    51   int                    compression; /**< The type of compression. */
    52   off_t                  offset;      /**< The base offset of the buffer. */
    53   size_t                 size;        /**< The size of the output buffer. */
    54   size_t                 level;       /**< The amount of data in the buffer. */
    55   uint8_t*               buffer;      /**< The buffer */
    56   uint32_t               read;        /**< The amount of data read. */
    57 } rtems_rtl_obj_comp_t;
     50  int                  fd;          /**< The file descriptor. */
     51  int                  compression; /**< The type of compression. */
     52  off_t                offset;      /**< The base offset of the buffer. */
     53  size_t               size;        /**< The size of the output buffer. */
     54  size_t               level;       /**< The amount of data in the buffer. */
     55  uint8_t*             buffer;      /**< The buffer */
     56  uint32_t             read;        /**< The amount of data read. */
     57} rtems_rtl_obj_comp;
    5858
    5959/**
    6060 * Return the input level.
    6161 */
    62 static inline uint32_t rtems_rtl_obj_comp_input (rtems_rtl_obj_comp_t* comp)
     62static inline uint32_t rtems_rtl_obj_comp_input (rtems_rtl_obj_comp* comp)
    6363{
    6464  return comp->read;
     
    7373 * @retval false The compressor is not open. The RTL error is set.
    7474 */
    75 bool rtems_rtl_obj_comp_open (rtems_rtl_obj_comp_t*  comp,
    76                               size_t                 size);
     75bool rtems_rtl_obj_comp_open (rtems_rtl_obj_comp*  comp,
     76                              size_t               size);
    7777
    7878/**
     
    8181 * @param comp The compressor to close.
    8282 */
    83 void rtems_rtl_obj_comp_close (rtems_rtl_obj_comp_t* comp);
     83void rtems_rtl_obj_comp_close (rtems_rtl_obj_comp* comp);
    8484
    8585/**
     
    9292 * @param offset The offset in the file the compressed stream starts.
    9393 */
    94 void rtems_rtl_obj_comp_set (rtems_rtl_obj_comp_t*  comp,
    95                              rtems_rtl_obj_cache_t* cache,
    96                              int                    fd,
    97                              int                    compression,
    98                              off_t                  offset);
     94void rtems_rtl_obj_comp_set (rtems_rtl_obj_comp*  comp,
     95                             rtems_rtl_obj_cache* cache,
     96                             int                  fd,
     97                             int                  compression,
     98                             off_t                offset);
    9999
    100100/**
     
    112112 * @retval false The read failed and the RTL error has been set.
    113113 */
    114 bool rtems_rtl_obj_comp_read (rtems_rtl_obj_comp_t* comp,
    115                               void*                 buffer,
    116                               size_t                length);
     114bool rtems_rtl_obj_comp_read (rtems_rtl_obj_comp* comp,
     115                              void*               buffer,
     116                              size_t              length);
    117117
    118118#ifdef __cplusplus
  • cpukit/include/rtems/rtl/rtl-obj-fwd.h

    r86e79d7 rf59d435d  
    2424 * The forward declaration of the obj section structure.
    2525 */
    26 struct rtems_rtl_obj_sect_s;
    27 typedef struct rtems_rtl_obj_sect_s rtems_rtl_obj_sect_t;
     26struct rtems_rtl_obj_sect;
     27typedef struct rtems_rtl_obj_sect rtems_rtl_obj_sect;
    2828
    2929/**
    3030 * The forward declaration of the obj structure.
    3131 */
    32 struct rtems_rtl_obj_s;
    33 typedef struct rtems_rtl_obj_s rtems_rtl_obj_t;
     32struct rtems_rtl_obj;
     33typedef struct rtems_rtl_obj rtems_rtl_obj;
    3434
    3535#ifdef __cplusplus
  • cpukit/include/rtems/rtl/rtl-obj.h

    r86e79d7 rf59d435d  
    3636 * Loader format definition.
    3737 */
    38 typedef struct rtems_rtl_loader_format_s
     38typedef struct rtems_rtl_loader_format
    3939{
    4040  /**
     
    4848   */
    4949  uint32_t flags;
    50 } rtems_rtl_loader_format_t;
     50} rtems_rtl_loader_format;
    5151
    5252/**
     
    5454 * and if it is detected as suitable it returns true.
    5555 */
    56 typedef bool (*rtems_rtl_loader_check) (rtems_rtl_obj_t* obj, int fd);
     56typedef bool (*rtems_rtl_loader_check) (rtems_rtl_obj* obj, int fd);
    5757
    5858/**
     
    6060 * format.
    6161 */
    62 typedef bool (*rtems_rtl_loader_load) (rtems_rtl_obj_t* obj, int fd);
     62typedef bool (*rtems_rtl_loader_load) (rtems_rtl_obj* obj, int fd);
    6363
    6464/**
     
    6666 * specific format.
    6767 */
    68 typedef bool (*rtems_rtl_loader_unload) (rtems_rtl_obj_t* obj);
     68typedef bool (*rtems_rtl_loader_unload) (rtems_rtl_obj* obj);
    6969
    7070/**
     
    7272 * format signature.
    7373 */
    74 typedef rtems_rtl_loader_format_t* (*rtems_rtl_loader_sig) (void);
     74typedef rtems_rtl_loader_format* (*rtems_rtl_loader_sig) (void);
    7575
    7676/**
    7777 * Table for supported loadable formats.
    7878 */
    79 typedef struct rtems_rtl_loader_table_s
     79typedef struct rtems_rtl_loader_table
    8080{
    8181  rtems_rtl_loader_check  check;     /**< The check handler. */
     
    8383  rtems_rtl_loader_unload unload;    /**< The unloader. */
    8484  rtems_rtl_loader_sig    signature; /**< The loader's signature. */
    85 } rtems_rtl_loader_table_t;
     85} rtems_rtl_loader_table;
    8686
    8787/**
     
    122122 * together in memory.
    123123 */
    124 struct rtems_rtl_obj_sect_s
     124struct rtems_rtl_obj_sect
    125125{
    126126  rtems_chain_node node;        /**< The node's link in the chain. */
     
    151151 * kernel image.
    152152 */
    153 struct rtems_rtl_obj_s
    154 {
    155   rtems_chain_node     link;         /**< The node's link in the chain. */
    156   uint32_t             flags;        /**< The status of the object file. */
    157   uint32_t             users;        /**< References to the object file. */
    158   int                  format;       /**< The format of the object file. */
    159   const char*          fname;        /**< The file name for the object. */
    160   const char*          oname;        /**< The object file name. Can be
    161                                       *   relative. */
    162   const char*          aname;        /**< The archive name containing the
    163                                       *   object. NULL means the object is not
    164                                       *   in a lib */
    165   off_t                ooffset;      /**< The object offset in the archive. */
    166   size_t               fsize;        /**< Size of the object file. */
    167   rtems_chain_control  sections;     /**< The sections of interest in the
    168                                       *   object file. */
    169   rtems_rtl_obj_sym_t* local_table;  /**< Local symbol table. */
    170   size_t               local_syms;   /**< Local symbol count. */
    171   size_t               local_size;   /**< Local symbol memory usage. */
    172   rtems_rtl_obj_sym_t* global_table; /**< Global symbol table. */
    173   size_t               global_syms;  /**< Global symbol count. */
    174   size_t               global_size;  /**< Global symbol memory usage. */
    175   uint32_t             unresolved;   /**< The number of unresolved relocations. */
    176   void*                text_base;    /**< The base address of the text section
    177                                       *   in memory. */
    178   size_t               text_size;     /**< The size of the text section. */
    179   void*                const_base;   /**< The base address of the const section
    180                                       *   in memory. */
    181   void*                eh_base;      /**< The base address of the eh section
    182                                       *   in memory. */
    183   size_t               eh_size;      /**< The size of the eh section. */
    184   void*                data_base;    /**< The base address of the data section
    185                                       *   in memory. */
    186   void*                bss_base;     /**< The base address of the bss section
    187                                       *   in memory. */
    188   size_t               bss_size;     /**< The size of the bss section. */
    189   size_t               exec_size;    /**< The amount of executable memory
    190                                       *   allocated */
    191   void*                entry;        /**< The entry point of the module. */
    192   uint32_t             checksum;     /**< The checksum of the text sections. A
    193                                       *   zero means do not checksum. */
    194   uint32_t*            sec_num;      /**< The sec nums of each obj. */
    195   uint32_t             obj_num;      /**< The count of elf files in an rtl obj. */
    196   struct link_map*     linkmap;      /**< For GDB. */
    197   void*                loader;       /**< The file details specific to a loader. */
     153struct rtems_rtl_obj
     154{
     155  rtems_chain_node    link;         /**< The node's link in the chain. */
     156  uint32_t            flags;        /**< The status of the object file. */
     157  uint32_t            users;        /**< References to the object file. */
     158  int                 format;       /**< The format of the object file. */
     159  const char*         fname;        /**< The file name for the object. */
     160  const char*         oname;        /**< The object file name. Can be
     161                                     *   relative. */
     162  const char*         aname;        /**< The archive name containing the
     163                                     *   object. NULL means the object is not
     164                                     *   in a lib */
     165  off_t               ooffset;      /**< The object offset in the archive. */
     166  size_t              fsize;        /**< Size of the object file. */
     167  rtems_chain_control sections;     /**< The sections of interest in the
     168                                     *   object file. */
     169  rtems_rtl_obj_sym* local_table;  /**< Local symbol table. */
     170  size_t              local_syms;   /**< Local symbol count. */
     171  size_t              local_size;   /**< Local symbol memory usage. */
     172  rtems_rtl_obj_sym* global_table; /**< Global symbol table. */
     173  size_t              global_syms;  /**< Global symbol count. */
     174  size_t              global_size;  /**< Global symbol memory usage. */
     175  uint32_t            unresolved;   /**< The number of unresolved relocations. */
     176  void*               text_base;    /**< The base address of the text section
     177                                     *   in memory. */
     178  size_t              text_size;    /**< The size of the text section. */
     179  void*               const_base;   /**< The base address of the const section
     180                                     *   in memory. */
     181  void*               eh_base;      /**< The base address of the eh section
     182                                     *   in memory. */
     183  size_t              eh_size;      /**< The size of the eh section. */
     184  void*               data_base;    /**< The base address of the data section
     185                                     *   in memory. */
     186  void*               bss_base;     /**< The base address of the bss section
     187                                     *   in memory. */
     188  size_t              bss_size;     /**< The size of the bss section. */
     189  size_t              exec_size;    /**< The amount of executable memory
     190                                     *   allocated */
     191  void*               entry;        /**< The entry point of the module. */
     192  uint32_t            checksum;     /**< The checksum of the text sections. A
     193                                     *   zero means do not checksum. */
     194  uint32_t*           sec_num;      /**< The sec nums of each obj. */
     195  uint32_t            obj_num;      /**< The count of elf files in an rtl obj. */
     196  struct link_map*    linkmap;      /**< For GDB. */
     197  void*               loader;       /**< The file details specific to a loader. */
    198198};
    199199
     
    209209 * @retval false The operation failed and the RTL has been set.
    210210 */
    211 typedef bool (*rtems_rtl_obj_sect_handler_t)(rtems_rtl_obj_t*      obj,
    212                                              int                   fd,
    213                                              rtems_rtl_obj_sect_t* sect,
    214                                              void*                 data);
     211typedef bool (*rtems_rtl_obj_sect_handler)(rtems_rtl_obj*      obj,
     212                                           int                 fd,
     213                                           rtems_rtl_obj_sect* sect,
     214                                           void*               data);
    215215
    216216/**
     
    220220 * @return const char* The string.
    221221 */
    222 static inline const char* rtems_rtl_obj_fname (const rtems_rtl_obj_t* obj)
     222static inline const char* rtems_rtl_obj_fname (const rtems_rtl_obj* obj)
    223223{
    224224  return obj->fname;
     
    231231 * @return bool There is a file name
    232232 */
    233 static inline bool rtems_rtl_obj_fname_valid (const rtems_rtl_obj_t* obj)
     233static inline bool rtems_rtl_obj_fname_valid (const rtems_rtl_obj* obj)
    234234{
    235235  return obj->fname;
     
    242242 * @return const char* The string.
    243243 */
    244 static inline const char* rtems_rtl_obj_oname (const rtems_rtl_obj_t* obj)
     244static inline const char* rtems_rtl_obj_oname (const rtems_rtl_obj* obj)
    245245{
    246246  return obj->oname;
     
    253253 * @return bool There is an object name
    254254 */
    255 static inline bool rtems_rtl_obj_oname_valid (const rtems_rtl_obj_t* obj)
     255static inline bool rtems_rtl_obj_oname_valid (const rtems_rtl_obj* obj)
    256256{
    257257  return obj->oname;
     
    264264 * @return const char* The string.
    265265 */
    266 static inline const char* rtems_rtl_obj_aname (const rtems_rtl_obj_t* obj)
     266static inline const char* rtems_rtl_obj_aname (const rtems_rtl_obj* obj)
    267267{
    268268  return obj->aname;
     
    275275 * @return bool There is an archive name
    276276 */
    277 static inline bool rtems_rtl_obj_aname_valid (const rtems_rtl_obj_t* obj)
     277static inline bool rtems_rtl_obj_aname_valid (const rtems_rtl_obj* obj)
    278278{
    279279  return obj->aname;
     
    286286 * @return bool There is an archive name
    287287 */
    288 static inline bool rtems_rtl_obj_text_inside (const rtems_rtl_obj_t* obj,
    289                                               const void*            address)
     288static inline bool rtems_rtl_obj_text_inside (const rtems_rtl_obj* obj,
     289                                              const void*          address)
    290290{
    291291  return
     
    299299 * @retval NULL No memory for the object.
    300300 */
    301 rtems_rtl_obj_t* rtems_rtl_obj_alloc (void);
     301rtems_rtl_obj* rtems_rtl_obj_alloc (void);
    302302
    303303/**
     
    308308 * @retval true The object has been freed.
    309309 */
    310 bool rtems_rtl_obj_free (rtems_rtl_obj_t* obj);
     310bool rtems_rtl_obj_free (rtems_rtl_obj* obj);
    311311
    312312/**
     
    318318 * @retval false The object file has all external references resolved.
    319319 */
    320 bool rtems_rtl_obj_unresolved (rtems_rtl_obj_t* obj);
     320bool rtems_rtl_obj_unresolved (rtems_rtl_obj* obj);
    321321
    322322/**
     
    342342 * @param name The name to match.
    343343 */
    344 bool rtems_rtl_match_name (rtems_rtl_obj_t* obj, const char* name);
     344bool rtems_rtl_match_name (rtems_rtl_obj* obj, const char* name);
    345345
    346346/**
     
    354354 * @retval false The file could not be located. The RTL error has been set.
    355355 */
    356 bool rtems_rtl_obj_find_file (rtems_rtl_obj_t* obj, const char* name);
     356bool rtems_rtl_obj_find_file (rtems_rtl_obj* obj, const char* name);
    357357
    358358/**
     
    371371 * @retval false The section has not been added. See the RTL error.
    372372 */
    373 bool rtems_rtl_obj_add_section (rtems_rtl_obj_t* obj,
    374                                 int              section,
    375                                 const char*      name,
    376                                 size_t           size,
    377                                 off_t            offset,
    378                                 uint32_t         alignment,
    379                                 int              link,
    380                                 int              info,
    381                                 uint32_t         flags);
     373bool rtems_rtl_obj_add_section (rtems_rtl_obj* obj,
     374                                int            section,
     375                                const char*    name,
     376                                size_t         size,
     377                                off_t          offset,
     378                                uint32_t       alignment,
     379                                int            link,
     380                                int            info,
     381                                uint32_t       flags);
    382382
    383383/**
     
    386386 * @param obj The object file's descriptor.
    387387 */
    388 void rtems_rtl_obj_erase_sections (rtems_rtl_obj_t* obj);
     388void rtems_rtl_obj_erase_sections (rtems_rtl_obj* obj);
    389389
    390390/**
     
    396396 * @return rtems_rtl_obj_sect_t* The named section.
    397397 */
    398 rtems_rtl_obj_sect_t* rtems_rtl_obj_find_section (const rtems_rtl_obj_t* obj,
    399                                                   const char*            name);
     398rtems_rtl_obj_sect* rtems_rtl_obj_find_section (const rtems_rtl_obj* obj,
     399                                                const char*          name);
    400400
    401401/**
     
    407407 * @return rtems_rtl_obj_sect_t* The found section.
    408408 */
    409 rtems_rtl_obj_sect_t* rtems_rtl_obj_find_section_by_index (const rtems_rtl_obj_t* obj,
    410                                                            int                    index);
     409rtems_rtl_obj_sect* rtems_rtl_obj_find_section_by_index (const rtems_rtl_obj* obj,
     410                                                         int                  index);
    411411
    412412/**
     
    418418 * @return size_t The size of the text area of the object file.
    419419 */
    420 size_t rtems_rtl_obj_text_size (const rtems_rtl_obj_t* obj);
     420size_t rtems_rtl_obj_text_size (const rtems_rtl_obj* obj);
    421421
    422422/**
     
    431431 * @return uint32_t The alignment. Can be 0 or 1 for not aligned or the alignment.
    432432 */
    433 uint32_t rtems_rtl_obj_text_alignment (const rtems_rtl_obj_t* obj);
     433uint32_t rtems_rtl_obj_text_alignment (const rtems_rtl_obj* obj);
    434434
    435435/**
     
    441441 * @return size_t The size of the const area of the object file.
    442442 */
    443 size_t rtems_rtl_obj_const_size (const rtems_rtl_obj_t* obj);
     443size_t rtems_rtl_obj_const_size (const rtems_rtl_obj* obj);
    444444
    445445/**
     
    454454 * @return uint32_t The alignment. Can be 0 or 1 for not aligned or the alignment.
    455455 */
    456 uint32_t rtems_rtl_obj_const_alignment (const rtems_rtl_obj_t* obj);
     456uint32_t rtems_rtl_obj_const_alignment (const rtems_rtl_obj* obj);
    457457
    458458/**
     
    463463 * @return size_t The size of the bss area of the object file.
    464464 */
    465 size_t rtems_rtl_obj_eh_size (const rtems_rtl_obj_t* obj);
     465size_t rtems_rtl_obj_eh_size (const rtems_rtl_obj* obj);
    466466
    467467/**
     
    476476 * @return uint32_t The alignment. Can be 0 or 1 for not aligned or the alignment.
    477477 */
    478 uint32_t rtems_rtl_obj_eh_alignment (const rtems_rtl_obj_t* obj);
     478uint32_t rtems_rtl_obj_eh_alignment (const rtems_rtl_obj* obj);
    479479
    480480/**
     
    486486 * @return size_t The size of the data area of the object file.
    487487 */
    488 size_t rtems_rtl_obj_data_size (const rtems_rtl_obj_t* obj);
     488size_t rtems_rtl_obj_data_size (const rtems_rtl_obj* obj);
    489489
    490490/**
     
    499499 * @return uint32_t The alignment. Can be 0 or 1 for not aligned or the alignment.
    500500 */
    501 uint32_t rtems_rtl_obj_data_alignment (const rtems_rtl_obj_t* obj);
     501uint32_t rtems_rtl_obj_data_alignment (const rtems_rtl_obj* obj);
    502502
    503503/**
     
    508508 * @return size_t The size of the bss area of the object file.
    509509 */
    510 size_t rtems_rtl_obj_bss_size (const rtems_rtl_obj_t* obj);
     510size_t rtems_rtl_obj_bss_size (const rtems_rtl_obj* obj);
    511511
    512512/**
     
    521521 * @return uint32_t The alignment. Can be 0 or 1 for not aligned or the alignment.
    522522 */
    523 uint32_t rtems_rtl_obj_bss_alignment (const rtems_rtl_obj_t* obj);
     523uint32_t rtems_rtl_obj_bss_alignment (const rtems_rtl_obj* obj);
    524524
    525525/**
     
    534534 * @retval false The relocation failed. The RTL error is set.
    535535 */
    536 bool rtems_rtl_obj_relocate (rtems_rtl_obj_t*             obj,
    537                              int                          fd,
    538                              rtems_rtl_obj_sect_handler_t handler,
    539                              void*                        data);
     536bool rtems_rtl_obj_relocate (rtems_rtl_obj*             obj,
     537                             int                        fd,
     538                             rtems_rtl_obj_sect_handler handler,
     539                             void*                      data);
    540540
    541541/**
     
    544544 * @param obj The object file's descriptor.
    545545 */
    546 void rtems_rtl_obj_synchronize_cache (rtems_rtl_obj_t*    obj);
     546void rtems_rtl_obj_synchronize_cache (rtems_rtl_obj* obj);
    547547
    548548/**
     
    554554 * @retval false The relocation failed. The RTL error is set.
    555555 */
    556 bool rtems_rtl_obj_relocate_unresolved (rtems_rtl_unresolv_reloc_t* reloc,
    557                                         rtems_rtl_obj_sym_t*        sym);
     556bool rtems_rtl_obj_relocate_unresolved (rtems_rtl_unresolv_reloc* reloc,
     557                                        rtems_rtl_obj_sym*        sym);
    558558
    559559/**
     
    568568 * @retval false The symbol loading failed. The RTL error is set.
    569569 */
    570 bool rtems_rtl_obj_load_symbols (rtems_rtl_obj_t*             obj,
    571                                  int                          fd,
    572                                  rtems_rtl_obj_sect_handler_t handler,
    573                                  void*                        data);
     570bool rtems_rtl_obj_load_symbols (rtems_rtl_obj*             obj,
     571                                 int                        fd,
     572                                 rtems_rtl_obj_sect_handler handler,
     573                                 void*                      data);
    574574
    575575/**
     
    585585 * @retval false The load failed. The RTL error has been set.
    586586 */
    587 bool rtems_rtl_obj_load_sections (rtems_rtl_obj_t*             obj,
    588                                   int                          fd,
    589                                   rtems_rtl_obj_sect_handler_t handler,
    590                                   void*                        data);
     587bool rtems_rtl_obj_load_sections (rtems_rtl_obj*             obj,
     588                                  int                        fd,
     589                                  rtems_rtl_obj_sect_handler handler,
     590                                  void*                      data);
    591591
    592592/**
     
    598598 * @param obj The object file's descriptor.
    599599 */
    600 void rtems_rtl_obj_run_ctors (rtems_rtl_obj_t* obj);
     600void rtems_rtl_obj_run_ctors (rtems_rtl_obj* obj);
    601601
    602602/**
     
    608608 * @param obj The object file's descriptor.
    609609 */
    610 void rtems_rtl_obj_run_dtors (rtems_rtl_obj_t* obj);
     610void rtems_rtl_obj_run_dtors (rtems_rtl_obj* obj);
    611611
    612612/**
     
    618618 * @retval false The load failed. The RTL error has been set.
    619619 */
    620 bool rtems_rtl_obj_load (rtems_rtl_obj_t* obj);
     620bool rtems_rtl_obj_load (rtems_rtl_obj* obj);
    621621
    622622/**
     
    627627 * @retval false The unload failed. The RTL error has been set.
    628628 */
    629 bool rtems_rtl_obj_unload (rtems_rtl_obj_t* obj);
     629bool rtems_rtl_obj_unload (rtems_rtl_obj* obj);
    630630
    631631#ifdef __cplusplus
  • cpukit/include/rtems/rtl/rtl-sym.h

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012-2014 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012-2014, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    2727 * An object file symbol.
    2828 */
    29 typedef struct rtems_rtl_obj_sym_s
     29typedef struct rtems_rtl_obj_sym
    3030{
    3131  rtems_chain_node node;    /**< The node's link in the chain. */
     
    3333  void*            value;   /**< The value of the symbol. */
    3434  uint32_t         data;    /**< Format specific data. */
    35 } rtems_rtl_obj_sym_t;
     35} rtems_rtl_obj_sym;
    3636
    3737/**
    3838 * Table of symbols stored in a hash table.
    3939 */
    40 typedef struct rtems_rtl_symbols_s
     40typedef struct rtems_rtl_symbols
    4141{
    4242  rtems_chain_control* buckets;
    4343  size_t               nbuckets;
    44 } rtems_rtl_symbols_t;
     44} rtems_rtl_symbols;
    4545
    4646/**
     
    5353 *               error has the error.
    5454 */
    55 bool rtems_rtl_symbol_table_open (rtems_rtl_symbols_t* symbols,
    56                                   size_t               buckets);
     55bool rtems_rtl_symbol_table_open (rtems_rtl_symbols* symbols,
     56                                  size_t             buckets);
    5757
    5858/**
     
    6161 * @param symbols Close the symbol table.
    6262 */
    63 void rtems_rtl_symbol_table_close (rtems_rtl_symbols_t* symbols);
     63void rtems_rtl_symbol_table_close (rtems_rtl_symbols* symbols);
    6464
    6565/**
     
    8484 * @param size The size of the table in bytes.
    8585 */
    86 bool rtems_rtl_symbol_global_add (rtems_rtl_obj_t*     obj,
     86bool rtems_rtl_symbol_global_add (rtems_rtl_obj     obj,
    8787                                  const unsigned char* esyms,
    8888                                  unsigned int         size);
     
    9595 * @return rtems_rtl_obj_sym_t* Reference to the symbol.
    9696 */
    97 rtems_rtl_obj_sym_t* rtems_rtl_symbol_global_find (const char* name);
     97rtems_rtl_obj_sym* rtems_rtl_symbol_global_find (const char* name);
    9898
    9999/**
     
    105105 * @return rtems_rtl_obj_sym_t* Reference to the symbol.
    106106 */
    107 rtems_rtl_obj_sym_t* rtems_rtl_symbol_obj_find (rtems_rtl_obj_t* obj,
    108                                                 const char*      name);
     107rtems_rtl_obj_sym* rtems_rtl_symbol_obj_find (rtems_rtl_obj* obj,
     108                                              const char*    name);
    109109
    110110/**
     
    113113 * @param obj The object file the symbols are to be added.
    114114 */
    115 void rtems_rtl_symbol_obj_add (rtems_rtl_obj_t* obj);
     115void rtems_rtl_symbol_obj_add (rtems_rtl_obj* obj);
    116116
    117117/**
     
    120120 * @param obj The object file the local symbols are to be erased from.
    121121 */
    122 void rtems_rtl_symbol_obj_erase_local (rtems_rtl_obj_t* obj);
     122void rtems_rtl_symbol_obj_erase_local (rtems_rtl_obj* obj);
    123123
    124124/**
     
    127127 * @param obj The object file the symbols are to be erased from.
    128128 */
    129 void rtems_rtl_symbol_obj_erase (rtems_rtl_obj_t* obj);
     129void rtems_rtl_symbol_obj_erase (rtems_rtl_obj* obj);
    130130
    131131#ifdef __cplusplus
  • cpukit/include/rtems/rtl/rtl-unresolved.h

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    6464 * to better support 64bit targets.
    6565 */
    66 typedef uint32_t rtems_rtl_word_t;
     66typedef uint32_t rtems_rtl_word;
    6767
    6868/**
    6969 * The types of records in the blocks.
    7070 */
    71 typedef enum rtems_rtl_unresolved_rtype_e
     71typedef enum rtems_rtl_unresolved_rtype
    7272{
    7373  rtems_rtl_unresolved_empty = 0,  /**< The records is empty. Must always be 0 */
    7474  rtems_rtl_unresolved_name = 1,   /**< The record is a name. */
    7575  rtems_rtl_unresolved_reloc = 2   /**< The record is a relocation record. */
    76 } rtems_rtl_unresolved_rtype_t;
     76} rtems_rtl_unresolved_rtype;
    7777
    7878/**
     
    8181 * reference the same symbol name.
    8282 */
    83 typedef struct rtems_rtl_unresolv_name_s
    84 {
    85   uint16_t refs;       /**< The number of references to this name. */
    86   uint16_t length;     /**< The length of this name. */
     83typedef struct rtems_rtl_unresolv_name
     84{
     85  uint16_t   refs;     /**< The number of references to this name. */
     86  uint16_t   length;   /**< The length of this name. */
    8787  const char name[12]; /**< The symbol name. */
    88 } rtems_rtl_unresolv_name_t;
     88} rtems_rtl_unresolv_name;
    8989
    9090/**
     
    9292 * and references.
    9393 */
    94 typedef struct rtems_rtl_unresolv_reloc_s
    95 {
    96   rtems_rtl_obj_t* obj;     /**< The relocation's object file. */
    97   uint16_t         flags;   /**< Format specific flags. */
    98   uint16_t         name;    /**< The symbol's name. */
    99   uint16_t         sect;    /**< The target section. */
    100   rtems_rtl_word_t rel[3];  /**< Relocation record. */
    101 } rtems_rtl_unresolv_reloc_t;
     94typedef struct rtems_rtl_unresolv_reloc
     95{
     96  rtems_rtl_obj* obj;     /**< The relocation's object file. */
     97  uint16_t       flags;   /**< Format specific flags. */
     98  uint16_t       name;    /**< The symbol's name. */
     99  uint16_t       sect;    /**< The target section. */
     100  rtems_rtl_word rel[3];  /**< Relocation record. */
     101} rtems_rtl_unresolv_reloc;
    102102
    103103/**
    104104 * Unresolved externals records.
    105105 */
    106 typedef struct rtems_rtl_unresolv_rec_s
    107 {
    108   rtems_rtl_unresolved_rtype_t type;
     106typedef struct rtems_rtl_unresolv_rec
     107{
     108  rtems_rtl_unresolved_rtype type;
    109109  union
    110110  {
    111     rtems_rtl_unresolv_name_t name;    /**< The name, or */
    112     rtems_rtl_unresolv_reloc_t reloc;  /**< the relocation record. */
     111    rtems_rtl_unresolv_name  name;   /**< The name, or */
     112    rtems_rtl_unresolv_reloc reloc;  /**< the relocation record. */
    113113  } rec;
    114 } rtems_rtl_unresolv_rec_t;
     114} rtems_rtl_unresolv_rec;
    115115
    116116/**
    117117 * Unresolved blocks.
    118118 */
    119 typedef struct rtems_rtl_unresolv_block_s
    120 {
    121   rtems_chain_node         link; /**< Blocks are chained. */
    122   uint32_t                 recs; /**< The number of records in the block. */
    123   rtems_rtl_unresolv_rec_t rec;  /**< The records. More follow. */
    124 } rtems_rtl_unresolv_block_t;
     119typedef struct rtems_rtl_unresolv_block
     120{
     121  rtems_chain_node       link; /**< Blocks are chained. */
     122  uint32_t               recs; /**< The number of records in the block. */
     123  rtems_rtl_unresolv_rec rec;  /**< The records. More follow. */
     124} rtems_rtl_unresolv_block;
    125125
    126126/**
    127127 * Unresolved table holds the names and relocations.
    128128 */
    129 typedef struct rtems_rtl_unresolved_s
     129typedef struct rtems_rtl_unresolved
    130130{
    131131  uint32_t marker;
    132132  size_t              block_recs; /**< The records per blocks allocated. */
    133133  rtems_chain_control blocks;     /**< List of blocks. */
    134 } rtems_rtl_unresolved_t;
     134} rtems_rtl_unresolved;
    135135
    136136/**
     
    142142 * @retval false The iterator has not finished. Keep iterating.
    143143 */
    144 typedef bool rtems_rtl_unresolved_iterator_t (rtems_rtl_unresolv_rec_t* rec,
    145                                               void*                     data);
     144typedef bool rtems_rtl_unresolved_iterator (rtems_rtl_unresolv_rec* rec,
     145                                            void*                   data);
    146146
    147147/**
     
    154154 *               error has the error.
    155155 */
    156 bool rtems_rtl_unresolved_table_open (rtems_rtl_unresolved_t* unresolved,
    157                                       size_t                  block_records);
     156bool rtems_rtl_unresolved_table_open (rtems_rtl_unresolved* unresolved,
     157                                      size_t                block_records);
    158158
    159159/**
     
    162162 * @param unreolved Close the unresolved table.
    163163 */
    164 void rtems_rtl_unresolved_table_close (rtems_rtl_unresolved_t* unresolved);
     164void rtems_rtl_unresolved_table_close (rtems_rtl_unresolved* unresolved);
    165165
    166166/**
    167167 * Iterate over the table of unresolved entries.
    168168 */
    169 bool rtems_rtl_unresolved_interate (rtems_rtl_unresolved_iterator_t iterator,
    170                                     void*                           data);
     169bool rtems_rtl_unresolved_interate (rtems_rtl_unresolved_iterator iterator,
     170                                    void*                         data);
    171171
    172172/**
     
    182182 * @retval false The relocation could not be added.
    183183 */
    184 bool rtems_rtl_unresolved_add (rtems_rtl_obj_t*        obj,
    185                                const uint16_t          flags,
    186                                const char*             name,
    187                                const uint16_t          sect,
    188                                const rtems_rtl_word_t* rel);
     184bool rtems_rtl_unresolved_add (rtems_rtl_obj*        obj,
     185                               const uint16_t        flags,
     186                               const char*           name,
     187                               const uint16_t        sect,
     188                               const rtems_rtl_word* rel);
    189189
    190190/**
     
    201201 * @param size The size of the table in bytes.
    202202 */
    203 bool rtems_rtl_unresolved_remove (rtems_rtl_obj_t*        obj,
    204                                   const char*             name,
    205                                   const uint16_t          sect,
    206                                   const rtems_rtl_word_t* rel);
     203bool rtems_rtl_unresolved_remove (rtems_rtl_obj*        obj,
     204                                  const char*           name,
     205                                  const uint16_t        sect,
     206                                  const rtems_rtl_word* rel);
    207207
    208208#ifdef __cplusplus
  • cpukit/include/rtems/rtl/rtl.h

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    8585 * The type of constructor/destructor function.
    8686 */
    87 typedef void (*rtems_rtl_cdtor_t)(void);
     87typedef void (*rtems_rtl_cdtor)(void);
    8888
    8989/**
     
    9595 * could look at a hash table per object file.
    9696 */
    97 struct rtems_rtl_data_s
     97struct rtems_rtl_data
    9898{
    99   rtems_recursive_mutex  lock;           /**< The RTL lock */
    100   rtems_rtl_alloc_data_t allocator;      /**< The allocator data. */
    101   rtems_chain_control    objects;        /**< List if loaded object files. */
    102   const char*            paths;          /**< Search paths for archives. */
    103   rtems_rtl_symbols_t    globals;        /**< Global symbol table. */
    104   rtems_rtl_unresolved_t unresolved;     /**< Unresolved symbols. */
    105   rtems_rtl_obj_t*       base;           /**< Base object file. */
    106   rtems_rtl_obj_cache_t  symbols;        /**< Symbols object file cache. */
    107   rtems_rtl_obj_cache_t  strings;        /**< Strings object file cache. */
    108   rtems_rtl_obj_cache_t  relocs;         /**< Relocations object file cache. */
    109   rtems_rtl_obj_comp_t   decomp;         /**< The decompression compressor. */
    110   int                    last_errno;     /**< Last error number. */
    111   char                   last_error[64]; /**< Last error string. */
     99  rtems_recursive_mutex lock;           /**< The RTL lock */
     100  rtems_rtl_alloc_data  allocator;      /**< The allocator data. */
     101  rtems_chain_control   objects;        /**< List if loaded object files. */
     102  const char*           paths;          /**< Search paths for archives. */
     103  rtems_rtl_symbols     globals;        /**< Global symbol table. */
     104  rtems_rtl_unresolved  unresolved;     /**< Unresolved symbols. */
     105  rtems_rtl_obj*        base;           /**< Base object file. */
     106  rtems_rtl_obj_cache   symbols;        /**< Symbols object file cache. */
     107  rtems_rtl_obj_cache   strings;        /**< Strings object file cache. */
     108  rtems_rtl_obj_cache   relocs;         /**< Relocations object file cache. */
     109  rtems_rtl_obj_comp    decomp;         /**< The decompression compressor. */
     110  int                   last_errno;     /**< Last error number. */
     111  char                  last_error[64]; /**< Last error string. */
    112112};
    113113
     
    115115 * Get the RTL data with out locking. This call assumes the RTL is locked.
    116116 *
    117  * @return rtems_rtl_data_t* The RTL data after being locked.
     117 * @return rtems_rtl_data* The RTL data after being locked.
    118118 * @retval NULL The RTL data is not initialised.
    119119 */
    120 rtems_rtl_data_t* rtems_rtl_data (void);
     120rtems_rtl_data* rtems_rtl_data_unprotected (void);
    121121
    122122/**
     
    124124 * is locked.
    125125 *
    126  * @return rtems_rtl_symbols_t* The RTL global symbols after being locked.
     126 * @return rtems_rtl_symbols* The RTL global symbols after being locked.
    127127 * @retval NULL The RTL data is not initialised.
    128128 */
    129 rtems_rtl_symbols_t* rtems_rtl_global_symbols (void);
     129rtems_rtl_symbols* rtems_rtl_global_symbols (void);
    130130
    131131/**
     
    133133 * is locked.
    134134 *
    135  * @return rtems_rtl_unresolv_t* The RTL unresolved symbols and reloc records.
     135 * @return rtems_rtl_unresolv* The RTL unresolved symbols and reloc records.
    136136 * @retval NULL The RTL data is not initialised.
    137137 */
    138 rtems_rtl_unresolved_t* rtems_rtl_unresolved (void);
     138rtems_rtl_unresolved* rtems_rtl_unresolved_unprotected (void);
    139139
    140140/**
     
    149149 *               is rtl is not initialised. If NULL is passed in no value set.
    150150 */
    151 void rtems_rtl_obj_caches (rtems_rtl_obj_cache_t** symbols,
    152                            rtems_rtl_obj_cache_t** strings,
    153                            rtems_rtl_obj_cache_t** relocs);
     151void rtems_rtl_obj_caches (rtems_rtl_obj_cache** symbols,
     152                           rtems_rtl_obj_cache** strings,
     153                           rtems_rtl_obj_cache** relocs);
    154154
    155155/**
     
    159159
    160160/**
    161  * Get the RTL decompressor setting the cache and the offset in the file the
    162  * compressed stream starts. This call assmes the RTL is locked.
     161 * Get the RTL decompressor setting for the cache and the offset in the file
     162 * the compressed stream starts. This call assumes the RTL is locked.
    163163 *
    164164 * @param decomp Pointer to the location to set the compressor into. Returns
     
    167167 * @param offset The offset in the file the compressed stream starts.
    168168 */
    169 void rtems_rtl_obj_comp (rtems_rtl_obj_comp_t** decomp,
    170                          rtems_rtl_obj_cache_t* cache,
    171                          int                    fd,
    172                          int                    compression,
    173                          off_t                  offset);
     169void rtems_rtl_obj_decompress (rtems_rtl_obj_comp** decomp,
     170                               rtems_rtl_obj_cache* cache,
     171                               int                  fd,
     172                               int                  compression,
     173                               off_t                offset);
    174174
    175175/**
    176176 * Lock the Run-time Linker.
    177177 *
    178  * @return rtems_rtl_data_t* The RTL data after being locked.
     178 * @return rtems_rtl_data* The RTL data after being locked.
    179179 * @retval NULL The RTL data could not be initialised or locked. Typically this
    180180 *              means the lock could not be created.
    181181 */
    182 rtems_rtl_data_t* rtems_rtl_lock (void);
     182rtems_rtl_data* rtems_rtl_lock (void);
    183183
    184184/**
     
    196196 * @return rtl_obj* The object file descriptor. NULL is returned if invalid.
    197197 */
    198 rtems_rtl_obj_t* rtems_rtl_check_handle (void* handle);
     198rtems_rtl_obj* rtems_rtl_check_handle (void* handle);
    199199
    200200/**
     
    203203 * @param name The name of the object file.
    204204 * @retval NULL No object file with that name found.
    205  * @return rtems_rtl_obj_t* The object file descriptor.
    206  */
    207 rtems_rtl_obj_t* rtems_rtl_find_obj (const char* name);
     205 * @return rtems_rtl_obj* The object file descriptor.
     206 */
     207rtems_rtl_obj* rtems_rtl_find_obj (const char* name);
    208208
    209209/**
     
    238238 * @return rtl_obj* The object file descriptor. NULL is returned if the load fails.
    239239 */
    240 rtems_rtl_obj_t* rtems_rtl_load_object (const char* name, int mode);
     240rtems_rtl_obj* rtems_rtl_load_object (const char* name, int mode);
    241241
    242242/**
     
    249249 * @retval false The object file could not be unloaded.
    250250 */
    251 bool rtems_rtl_unload_object (rtems_rtl_obj_t* obj);
     251bool rtems_rtl_unload_object (rtems_rtl_obj* obj);
    252252
    253253/**
     
    257257 * @param obj The object file.
    258258 */
    259 void rtems_rtl_run_ctors (rtems_rtl_obj_t* obj);
     259void rtems_rtl_run_ctors (rtems_rtl_obj* obj);
    260260
    261261/**
     
    310310 *                  returned if the load fails.
    311311 */
    312 rtems_rtl_obj_t* rtems_rtl_baseimage (void);
     312rtems_rtl_obj* rtems_rtl_baseimage (void);
    313313
    314314#ifdef __cplusplus
  • cpukit/libdl/dlfcn-shell.c

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    9999}
    100100
    101 typedef int (*call_t)(int argc, char* argv[]);
     101typedef int (*call_p)(int argc, char* argv[]);
    102102
    103103int
     
    107107  if (lookup_dlsym (&value, argc, argv))
    108108  {
    109     call_t call = value;
     109    call_p call = value;
    110110    int    r;
    111111    printf ("(*%p)(%d, ....)\n", value, argc - 3);
  • cpukit/libdl/dlfcn.c

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    2020#include <rtems/rtl/rtl.h>
    2121
    22 static rtems_rtl_obj_t*
     22static rtems_rtl_obj*
    2323dl_get_obj_from_handle (void* handle)
    2424{
    25   rtems_rtl_obj_t* obj;
     25  rtems_rtl_obj* obj;
    2626
    2727  /*
     
    4444dlopen (const char* name, int mode)
    4545{
    46   rtems_rtl_obj_t* obj = NULL;
     46  rtems_rtl_obj* obj = NULL;
    4747
    4848  if (!rtems_rtl_lock ())
     
    6868dlclose (void* handle)
    6969{
    70   rtems_rtl_obj_t* obj;
    71   int              r;
     70  rtems_rtl_obj* obj;
     71  int            r;
    7272
    7373  if (!rtems_rtl_lock ())
     
    9797dlsym (void* handle, const char *symbol)
    9898{
    99   rtems_rtl_obj_t*     obj;
    100   rtems_rtl_obj_sym_t* sym = NULL;
    101   void*                symval = NULL;
     99  rtems_rtl_obj*     obj;
     100  rtems_rtl_obj_sym* sym = NULL;
     101  void*              symval = NULL;
    102102
    103103  if (!rtems_rtl_lock ())
     
    137137dlinfo (void* handle, int request, void* p)
    138138{
    139   rtems_rtl_obj_t* obj;
    140   int              rc = -1;
     139  rtems_rtl_obj* obj;
     140  int            rc = -1;
    141141
    142142  if (!rtems_rtl_lock () || !p)
  • cpukit/libdl/rap.c

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    4545  int                 last_errno;     /**< Last error number. */
    4646  char                last_error[64]; /**< Last error string. */
    47 } rtems_rap_data_t;
     47} rtems_rap_data;
    4848
    4949/**
     
    5151 * loaded.
    5252 */
    53 typedef struct rtems_rap_app_s
     53typedef struct rtems_rap_app
    5454{
    5555  rtems_chain_node node;         /**< The node's link in the chain. */
    5656  const char*      name;         /**< The file name */
    5757  void*            handle;       /**< The dlopen handle. */
    58 } rtems_rap_app_t;
     58} rtems_rap_app;
    5959
    6060/**
     
    7070 * Static RAP data is returned to the user when the loader is locked.
    7171 */
    72 static rtems_rap_data_t rap_ = { .once = PTHREAD_ONCE_INIT };
     72static rtems_rap_data rap_ = { .once = PTHREAD_ONCE_INIT };
    7373
    7474/**
     
    8080 * RAP entry call signature.
    8181 */
    82 typedef int (*rtems_rap_entry_t)(int argc, const char* argv[]);
     82typedef int (*rtems_rap_entry)(int argc, const char* argv[]);
    8383
    8484/**
     
    101101}
    102102
    103 static rtems_rap_data_t*
     103static rtems_rap_data*
    104104rtems_rap_lock (void)
    105105{
     
    116116}
    117117
    118 static rtems_rap_app_t*
     118static rtems_rap_app*
    119119rtems_rap_check_handle (void* handle)
    120120{
    121   rtems_rap_app_t*  app;
     121  rtems_rap_app  app;
    122122  rtems_chain_node* node;
    123123
     
    127127  while (!rtems_chain_is_tail (&rap_.apps, node))
    128128  {
    129     rtems_rap_app_t* check = (rtems_rap_app_t*) node;
     129    rtems_rap_app* check = (rtems_rap_app*) node;
    130130    if (check == app)
    131131      return app;
     
    136136}
    137137
    138 static rtems_rap_app_t*
     138static rtems_rap_app*
    139139rtems_rap_app_alloc (void)
    140140{
    141   rtems_rap_app_t* app = malloc (sizeof (rtems_rap_app_t));
    142   memset (app, 0, sizeof (rtems_rap_app_t));
     141  rtems_rap_app* app = malloc (sizeof (rtems_rap_app));
     142  memset (app, 0, sizeof (rtems_rap_app));
    143143  rtems_chain_append (&rap_.apps, &app->node);
    144144  return app;
     
    146146
    147147static void
    148 rtems_rap_app_free (rtems_rap_app_t* app)
     148rtems_rap_app_free (rtems_rap_app* app)
    149149{
    150150  if (app->handle)
     
    159159
    160160static bool
    161 rtems_rap_match_name (rtems_rap_app_t* app, const char* name)
     161rtems_rap_match_name (rtems_rap_app* app, const char* name)
    162162{
    163163  const char* a;
     
    212212rtems_rap_set_error (int error, const char* format, ...)
    213213{
    214   rtems_rap_data_t* rap = rtems_rap_lock ();
    215   va_list           ap;
     214  rtems_rap_data* rap = rtems_rap_lock ();
     215  va_list         ap;
    216216  va_start (ap, format);
    217217  rap->last_errno = error;
     
    224224rtems_rap_load (const char* name, int mode, int argc, const char* argv[])
    225225{
    226   rtems_rap_data_t* rap = rtems_rap_lock ();
     226  rtems_rap_data* rap = rtems_rap_lock ();
    227227
    228228  if (!rap)
     
    237237  if (!rtems_rap_find (name))
    238238  {
    239     rtems_rap_app_t*  app;
    240     rtems_rap_entry_t init;
    241     rtems_rap_entry_t fini;
    242     size_t            size = 0;
    243     int               r;
     239    rtems_rap_app*  app;
     240    rtems_rap_entry init;
     241    rtems_rap_entry fini;
     242    size_t          size = 0;
     243    int             r;
    244244
    245245    /*
     
    310310rtems_rap_unload (const char* name)
    311311{
    312   rtems_rap_app_t*  app;
    313   rtems_rap_entry_t fini;
    314   int               r;
     312  rtems_rap_app*  app;
     313  rtems_rap_entry fini;
     314  int             r;
    315315
    316316  rtems_rap_lock ();
     
    353353rtems_rap_find (const char* name)
    354354{
    355   rtems_rap_data_t* rap = rtems_rap_lock ();
     355  rtems_rap_data rap = rtems_rap_lock ();
    356356  rtems_chain_node* node;
    357357
     
    360360  while (!rtems_chain_is_tail (&rap->apps, node))
    361361  {
    362     rtems_rap_app_t* app = (rtems_rap_app_t*) node;
     362    rtems_rap_app* app = (rtems_rap_app*) node;
    363363    if (rtems_rap_match_name (app, name))
    364364    {
     
    375375
    376376bool
    377 rtems_rap_iterate (rtems_rap_iterator_t iterator)
    378 {
    379   rtems_rap_data_t* rap = rtems_rap_lock ();
     377rtems_rap_iterate (rtems_rap_iterator iterator)
     378{
     379  rtems_rap_data rap = rtems_rap_lock ();
    380380  rtems_chain_node* node;
    381381  bool              result = true;
     
    385385  while (!rtems_chain_is_tail (&rap->apps, node))
    386386  {
    387     rtems_rap_app_t* app = (rtems_rap_app_t*) node;
     387    rtems_rap_app* app = (rtems_rap_app*) node;
    388388    result = iterator (app);
    389389    if (!result)
     
    400400rtems_rap_name (void* handle)
    401401{
    402   rtems_rap_app_t* app = rtems_rap_check_handle (handle);
     402  rtems_rap_app* app = rtems_rap_check_handle (handle);
    403403  if (app)
    404404    return app->name;
     
    409409rtems_rap_dl_handle (void* handle)
    410410{
    411   rtems_rap_app_t* app = rtems_rap_check_handle (handle);
     411  rtems_rap_app* app = rtems_rap_check_handle (handle);
    412412  if (app)
    413413    return app->handle;
     
    418418rtems_rap_get_error (char* message, size_t max_message)
    419419{
    420   rtems_rap_data_t* rap = rtems_rap_lock ();
    421   int               last_errno = rap->last_errno;
     420  rtems_rap_data* rap = rtems_rap_lock ();
     421  int             last_errno = rap->last_errno;
    422422  strlcpy (message, rap->last_error, max_message);
    423423  rtems_rap_unlock ();
  • cpukit/libdl/rtl-alloc-heap.c

    r86e79d7 rf59d435d  
    1919
    2020void
    21 rtems_rtl_alloc_heap (bool                  allocate,
    22                       rtems_rtl_alloc_tag_t tag,
    23                       void**                address,
    24                       size_t                size)
     21rtems_rtl_alloc_heap (bool                allocate,
     22                      rtems_rtl_alloc_tag tag,
     23                      void**              address,
     24                      size_t              size)
    2525{
    2626  if (allocate)
  • cpukit/libdl/rtl-alloc-heap.h

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    3636 *             not used if deleting or freeing a previous allocation.
    3737 */
    38 void rtems_rtl_alloc_heap(bool                  allocate,
    39                           rtems_rtl_alloc_tag_t tag,
    40                           void**                address,
    41                           size_t                size);
     38void rtems_rtl_alloc_heap(bool                allocate,
     39                          rtems_rtl_alloc_tag tag,
     40                          void**              address,
     41                          size_t              size);
    4242
    4343#ifdef __cplusplus
  • cpukit/libdl/rtl-allocator.c

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    4040
    4141void
    42 rtems_rtl_alloc_initialise (rtems_rtl_alloc_data_t* data)
     42rtems_rtl_alloc_initialise (rtems_rtl_alloc_data* data)
    4343{
    4444  int c;
     
    4949
    5050void*
    51 rtems_rtl_alloc_new (rtems_rtl_alloc_tag_t tag, size_t size, bool zero)
    52 {
    53   rtems_rtl_data_t* rtl = rtems_rtl_lock ();
    54   void*             address = NULL;
     51rtems_rtl_alloc_new (rtems_rtl_alloc_tag tag, size_t size, bool zero)
     52{
     53  rtems_rtl_data* rtl = rtems_rtl_lock ();
     54  void*           address = NULL;
    5555
    5656  /*
     
    7777
    7878void
    79 rtems_rtl_alloc_del (rtems_rtl_alloc_tag_t tag, void* address)
    80 {
    81   rtems_rtl_data_t* rtl = rtems_rtl_lock ();
     79rtems_rtl_alloc_del (rtems_rtl_alloc_tag tag, void* address)
     80{
     81  rtems_rtl_data* rtl = rtems_rtl_lock ();
    8282
    8383  if (rtems_rtl_trace (RTEMS_RTL_TRACE_ALLOCATOR))
     
    9191}
    9292
    93 rtems_rtl_allocator_t
    94 rtems_rtl_alloc_hook (rtems_rtl_allocator_t handler)
    95 {
    96   rtems_rtl_data_t* rtl = rtems_rtl_lock ();
    97   rtems_rtl_allocator_t previous = rtl->allocator.allocator;
     93rtems_rtl_allocator
     94rtems_rtl_alloc_hook (rtems_rtl_allocator handler)
     95{
     96  rtems_rtl_data*    rtl = rtems_rtl_lock ();
     97  rtems_rtl_allocator previous = rtl->allocator.allocator;
    9898  rtl->allocator.allocator = handler;
    9999  rtems_rtl_unlock ();
     
    102102
    103103void
    104 rtems_rtl_alloc_indirect_new (rtems_rtl_alloc_tag_t tag,
    105                               rtems_rtl_ptr_t*      handle,
    106                               size_t                size)
    107 {
    108   rtems_rtl_data_t* rtl = rtems_rtl_lock ();
     104rtems_rtl_alloc_indirect_new (rtems_rtl_alloc_tag tag,
     105                              rtems_rtl_ptr*      handle,
     106                              size_t              size)
     107{
     108  rtems_rtl_data* rtl = rtems_rtl_lock ();
    109109
    110110  if (rtems_rtl_trace (RTEMS_RTL_TRACE_ALLOCATOR))
     
    119119  if (rtl)
    120120  {
    121     rtems_rtl_alloc_data_t* allocator = &rtl->allocator;
     121    rtems_rtl_alloc_data* allocator = &rtl->allocator;
    122122    handle->pointer = rtems_rtl_alloc_new (tag, size, false);
    123123    if (!rtems_rtl_ptr_null (handle))
     
    130130
    131131void
    132 rtems_rtl_alloc_indirect_del (rtems_rtl_alloc_tag_t tag,
    133                               rtems_rtl_ptr_t*      handle)
    134 {
    135   rtems_rtl_data_t* rtl = rtems_rtl_lock ();
     132rtems_rtl_alloc_indirect_del (rtems_rtl_alloc_tag tag,
     133                              rtems_rtl_ptr*      handle)
     134{
     135  rtems_rtl_data* rtl = rtems_rtl_lock ();
    136136
    137137  if (rtems_rtl_trace (RTEMS_RTL_TRACE_ALLOCATOR))
  • cpukit/libdl/rtl-debugger.c

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    4444
    4545int
    46 _rtld_linkmap_add (rtems_rtl_obj_t* obj)
     46_rtld_linkmap_add (rtems_rtl_obj* obj)
    4747{
    4848  struct link_map* l = obj->linkmap;
     
    7777
    7878void
    79 _rtld_linkmap_delete (rtems_rtl_obj_t* obj)
     79_rtld_linkmap_delete (rtems_rtl_obj* obj)
    8080{
    8181  struct link_map* l = obj->linkmap;
  • cpukit/libdl/rtl-elf.c

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012-2014 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012-2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    4444 * The ELF format signature.
    4545 */
    46 static rtems_rtl_loader_format_t elf_sig =
     46static rtems_rtl_loader_format elf_sig =
    4747{
    4848  .label = "ELF",
     
    6666
    6767bool
    68 rtems_rtl_elf_find_symbol (rtems_rtl_obj_t* obj,
    69                            const Elf_Sym*   sym,
    70                            const char*      symname,
    71                            Elf_Word*        value)
    72 {
    73   rtems_rtl_obj_sect_t* sect;
     68rtems_rtl_elf_find_symbol (rtems_rtl_obj* obj,
     69                           const Elf_Sym* sym,
     70                           const char*    symname,
     71                           Elf_Word*      value)
     72{
     73  rtems_rtl_obj_sect* sect;
    7474
    7575  if (ELF_ST_TYPE(sym->st_info) == STT_NOTYPE)
     
    7878     * Search the object file then the global table for the symbol.
    7979     */
    80     rtems_rtl_obj_sym_t* symbol = rtems_rtl_symbol_obj_find (obj, symname);
     80    rtems_rtl_obj_sym* symbol = rtems_rtl_symbol_obj_find (obj, symname);
    8181    if (!symbol)
    8282    {
     
    101101
    102102static bool
    103 rtems_rtl_elf_relocator (rtems_rtl_obj_t*      obj,
    104                          int                   fd,
    105                          rtems_rtl_obj_sect_t* sect,
    106                          void*                 data)
    107 {
    108   rtems_rtl_obj_cache_t* symbols;
    109   rtems_rtl_obj_cache_t* strings;
    110   rtems_rtl_obj_cache_t* relocs;
    111   rtems_rtl_obj_sect_t*  targetsect;
    112   rtems_rtl_obj_sect_t*  symsect;
    113   rtems_rtl_obj_sect_t*  strtab;
    114   bool                   is_rela;
    115   size_t                 reloc_size;
    116   int                    reloc;
     103rtems_rtl_elf_relocator (rtems_rtl_obj*      obj,
     104                         int                 fd,
     105                         rtems_rtl_obj_sect* sect,
     106                         void*               data)
     107{
     108  rtems_rtl_obj_cache* symbols;
     109  rtems_rtl_obj_cache* strings;
     110  rtems_rtl_obj_cache* relocs;
     111  rtems_rtl_obj_sect*  targetsect;
     112  rtems_rtl_obj_sect*  symsect;
     113  rtems_rtl_obj_sect*  strtab;
     114  bool                 is_rela;
     115  size_t               reloc_size;
     116  int                  reloc;
    117117
    118118  /*
     
    216216      if (!rtems_rtl_elf_find_symbol (obj, &sym, symname, &symvalue))
    217217      {
    218         uint16_t         flags = 0;
    219         rtems_rtl_word_t rel_words[3];
     218        uint16_t       flags = 0;
     219        rtems_rtl_word rel_words[3];
    220220
    221221        relocate = false;
     
    283283
    284284bool
    285 rtems_rtl_obj_relocate_unresolved (rtems_rtl_unresolv_reloc_t* reloc,
    286                                    rtems_rtl_obj_sym_t*        sym)
    287 {
    288   rtems_rtl_obj_sect_t* sect;
    289   bool                  is_rela;
    290   Elf_Word              symvalue;
     285rtems_rtl_obj_relocate_unresolved (rtems_rtl_unresolv_reloc* reloc,
     286                                   rtems_rtl_obj_sym*        sym)
     287{
     288  rtems_rtl_obj_sect* sect;
     289  bool                is_rela;
     290  Elf_Word            symvalue;
    291291
    292292  is_rela =reloc->flags & 1;
     
    339339
    340340static bool
    341 rtems_rtl_elf_symbols (rtems_rtl_obj_t*      obj,
    342                        int                   fd,
    343                        rtems_rtl_obj_sect_t* sect,
    344                        void*                 data)
    345 {
    346   rtems_rtl_obj_cache_t* symbols;
    347   rtems_rtl_obj_cache_t* strings;
    348   rtems_rtl_obj_sect_t*  strtab;
    349   int                    locals;
    350   int                    local_string_space;
    351   rtems_rtl_obj_sym_t*   lsym;
    352   char*                  lstring;
    353   int                    globals;
    354   int                    global_string_space;
    355   rtems_rtl_obj_sym_t*   gsym;
    356   char*                  gstring;
    357   int                    sym;
     341rtems_rtl_elf_symbols (rtems_rtl_obj*      obj,
     342                       int                 fd,
     343                       rtems_rtl_obj_sect* sect,
     344                       void*               data)
     345{
     346  rtems_rtl_obj_cache* symbols;
     347  rtems_rtl_obj_cache* strings;
     348  rtems_rtl_obj_sect*  strtab;
     349  int                  locals;
     350  int                  local_string_space;
     351  rtems_rtl_obj_sym*   lsym;
     352  char*                lstring;
     353  int                  globals;
     354  int                  global_string_space;
     355  rtems_rtl_obj_sym*   gsym;
     356  char*                gstring;
     357  int                  sym;
    358358
    359359  strtab = rtems_rtl_obj_find_section (obj, ".strtab");
     
    409409         (ELF_ST_TYPE (symbol.st_info) == STT_NOTYPE)))
    410410    {
    411       rtems_rtl_obj_sect_t* symsect;
     411      rtems_rtl_obj_sect* symsect;
    412412
    413413      symsect = rtems_rtl_obj_find_section_by_index (obj, symbol.st_shndx);
     
    447447  if (locals)
    448448  {
    449     obj->local_size = locals * sizeof (rtems_rtl_obj_sym_t) + local_string_space;
     449    obj->local_size = locals * sizeof (rtems_rtl_obj_sym) + local_string_space;
    450450    obj->local_table = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_SYMBOL,
    451451                                            obj->local_size, true);
     
    462462  if (globals)
    463463  {
    464     obj->global_size = globals * sizeof (rtems_rtl_obj_sym_t) + global_string_space;
     464    obj->global_size = globals * sizeof (rtems_rtl_obj_sym) + global_string_space;
    465465    obj->global_table = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_SYMBOL,
    466466                                             obj->global_size, true);
     
    483483  lsym = obj->local_table;
    484484  lstring =
    485     (((char*) obj->local_table) + (locals * sizeof (rtems_rtl_obj_sym_t)));
     485    (((char*) obj->local_table) + (locals * sizeof (rtems_rtl_obj_sym)));
    486486  gsym = obj->global_table;
    487487  gstring =
    488     (((char*) obj->global_table) + (globals * sizeof (rtems_rtl_obj_sym_t)));
     488    (((char*) obj->global_table) + (globals * sizeof (rtems_rtl_obj_sym)));
    489489
    490490  for (sym = 0; sym < (sect->size / sizeof (Elf_Sym)); ++sym)
     
    531531          (ELF_ST_BIND (symbol.st_info) == STB_LOCAL)))
    532532      {
    533         rtems_rtl_obj_sect_t* symsect;
    534         rtems_rtl_obj_sym_t*  osym;
    535         char*                 string;
     533        rtems_rtl_obj_sect* symsect;
     534        rtems_rtl_obj_sym*  osym;
     535        char*               string;
    536536
    537537        symsect = rtems_rtl_obj_find_section_by_index (obj, symbol.st_shndx);
     
    579579
    580580static bool
    581 rtems_rtl_elf_loader (rtems_rtl_obj_t*      obj,
    582                       int                   fd,
    583                       rtems_rtl_obj_sect_t* sect,
    584                       void*                 data)
     581rtems_rtl_elf_loader (rtems_rtl_obj*      obj,
     582                      int                 fd,
     583                      rtems_rtl_obj_sect* sect,
     584                      void*               data)
    585585{
    586586  uint8_t* base_offset;
     
    612612
    613613static bool
    614 rtems_rtl_elf_parse_sections (rtems_rtl_obj_t* obj, int fd, Elf_Ehdr* ehdr)
    615 {
    616   rtems_rtl_obj_cache_t* sects;
    617   rtems_rtl_obj_cache_t* strings;
    618   int                    section;
    619   off_t                  sectstroff;
    620   off_t                  off;
    621   Elf_Shdr               shdr;
     614rtems_rtl_elf_parse_sections (rtems_rtl_obj* obj, int fd, Elf_Ehdr* ehdr)
     615{
     616  rtems_rtl_obj_cache* sects;
     617  rtems_rtl_obj_cache* strings;
     618  int                  section;
     619  off_t                sectstroff;
     620  off_t                off;
     621  Elf_Shdr             shdr;
    622622
    623623  rtems_rtl_obj_caches (&sects, &strings, NULL);
     
    773773
    774774bool
    775 rtems_rtl_elf_file_check (rtems_rtl_obj_t* obj, int fd)
    776 {
    777   rtems_rtl_obj_cache_t* header;
    778   Elf_Ehdr               ehdr;
     775rtems_rtl_elf_file_check (rtems_rtl_obj* obj, int fd)
     776{
     777  rtems_rtl_obj_cache* header;
     778  Elf_Ehdr             ehdr;
    779779
    780780  rtems_rtl_obj_caches (&header, NULL, NULL);
     
    804804
    805805static bool
    806 rtems_rtl_elf_load_linkmap (rtems_rtl_obj_t* obj)
     806rtems_rtl_elf_load_linkmap (rtems_rtl_obj* obj)
    807807{
    808808  rtems_chain_control* sections = NULL;
     
    825825    while (!rtems_chain_is_tail (sections, node))
    826826    {
    827       rtems_rtl_obj_sect_t* sect = (rtems_rtl_obj_sect_t*) node;
     827      rtems_rtl_obj_sect* sect = (rtems_rtl_obj_sect*) node;
    828828      if ((sect->size != 0) && ((sect->flags & mask) != 0))
    829829      {
     
    868868    while (!rtems_chain_is_tail (sections, node))
    869869    {
    870       rtems_rtl_obj_sect_t* sect = (rtems_rtl_obj_sect_t*) node;
     870      rtems_rtl_obj_sect* sect = (rtems_rtl_obj_sect*) node;
    871871
    872872      if ((sect->size != 0) && ((sect->flags & mask) != 0))
     
    905905
    906906bool
    907 rtems_rtl_elf_file_load (rtems_rtl_obj_t* obj, int fd)
    908 {
    909   rtems_rtl_obj_cache_t* header;
    910   Elf_Ehdr               ehdr;
     907rtems_rtl_elf_file_load (rtems_rtl_obj* obj, int fd)
     908{
     909  rtems_rtl_obj_cache* header;
     910  Elf_Ehdr             ehdr;
    911911
    912912  rtems_rtl_obj_caches (&header, NULL, NULL);
     
    995995
    996996bool
    997 rtems_rtl_elf_file_unload (rtems_rtl_obj_t* obj)
     997rtems_rtl_elf_file_unload (rtems_rtl_obj* obj)
    998998{
    999999  rtems_rtl_elf_unwind_deregister (obj);
     
    10011001}
    10021002
    1003 rtems_rtl_loader_format_t*
     1003rtems_rtl_loader_format*
    10041004rtems_rtl_elf_file_sig (void)
    10051005{
  • cpukit/libdl/rtl-elf.h

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012-2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    6868 * @retval uint32_t RTL object file flags.
    6969 */
    70 uint32_t rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj,
    71                                       const Elf_Shdr*        shdr);
     70uint32_t rtems_rtl_elf_section_flags (const rtems_rtl_obj* obj,
     71                                      const Elf_Shdr*      shdr);
    7272
    7373/**
     
    9595 * @retval bool The relocation could not be applied.
    9696 */
    97 bool rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t*      obj,
    98                                  const Elf_Rel*              rel,
    99                                  const rtems_rtl_obj_sect_t* sect,
    100                                  const char*                 symname,
    101                                  const Elf_Byte              syminfo,
    102                                  const Elf_Word              symvalue);
     97bool rtems_rtl_elf_relocate_rel (const rtems_rtl_obj*      obj,
     98                                 const Elf_Rel*            rel,
     99                                 const rtems_rtl_obj_sect* sect,
     100                                 const char*               symname,
     101                                 const Elf_Byte            syminfo,
     102                                 const Elf_Word            symvalue);
    103103
    104104/**
     
    116116 * @retval bool The relocation could not be applied.
    117117 */
    118 bool rtems_rtl_elf_relocate_rela (const rtems_rtl_obj_t*      obj,
    119                                   const Elf_Rela*             rela,
    120                                   const rtems_rtl_obj_sect_t* sect,
    121                                   const char*                 symname,
    122                                   const Elf_Byte              syminfo,
    123                                   const Elf_Word              symvalue);
     118bool rtems_rtl_elf_relocate_rela (const rtems_rtl_obj*      obj,
     119                                  const Elf_Rela*           rela,
     120                                  const rtems_rtl_obj_sect* sect,
     121                                  const char*               symname,
     122                                  const Elf_Byte            syminfo,
     123                                  const Elf_Word            symvalue);
    124124
    125125/**
     
    140140 * @retval false The symbol could not be result. The RTL error is set.
    141141 */
    142 bool rtems_rtl_elf_find_symbol (rtems_rtl_obj_t* obj,
    143                                 const Elf_Sym*   sym,
    144                                 const char*      symname,
    145                                 Elf_Word*        value);
     142bool rtems_rtl_elf_find_symbol (rtems_rtl_obj* obj,
     143                                const Elf_Sym* sym,
     144                                const char*    symname,
     145                                Elf_Word*      value);
    146146
    147147/**
     
    151151 * @param fd The file descriptor.
    152152 */
    153 bool rtems_rtl_elf_file_check (rtems_rtl_obj_t* obj, int fd);
     153bool rtems_rtl_elf_file_check (rtems_rtl_obj* obj, int fd);
    154154
    155155/**
     
    159159 * @param fd The file descriptor.
    160160 */
    161 bool rtems_rtl_elf_file_load (rtems_rtl_obj_t* obj, int fd);
     161bool rtems_rtl_elf_file_load (rtems_rtl_obj* obj, int fd);
    162162
    163163/**
     
    166166 * @param obj The object to unload.
    167167 */
    168 bool rtems_rtl_elf_file_unload (rtems_rtl_obj_t* obj);
     168bool rtems_rtl_elf_file_unload (rtems_rtl_obj* obj);
    169169
    170170/**
    171171 * The ELF format signature handler.
    172172 *
    173  * @return rtems_rtl_loader_format_t* The format's signature.
     173 * @return rtems_rtl_loader_format* The format's signature.
    174174 */
    175 rtems_rtl_loader_format_t* rtems_rtl_elf_file_sig (void);
     175rtems_rtl_loader_format* rtems_rtl_elf_file_sig (void);
    176176
    177177#ifdef __cplusplus
  • cpukit/libdl/rtl-error.c

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012-2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    2929rtems_rtl_set_error (int error, const char* format, ...)
    3030{
    31   rtems_rtl_data_t* rtl = rtems_rtl_lock ();
    32   va_list           ap;
     31  rtems_rtl_data* rtl = rtems_rtl_lock ();
     32  va_list         ap;
    3333  va_start (ap, format);
    3434  rtl->last_errno = error;
     
    4141rtems_rtl_get_error (char* message, size_t max_message)
    4242{
    43   rtems_rtl_data_t* rtl = rtems_rtl_lock ();
     43  rtems_rtl_data* rtl = rtems_rtl_lock ();
    4444  if (rtl != NULL)
    4545  {
  • cpukit/libdl/rtl-error.h

    r86e79d7 rf59d435d  
    2828
    2929/**
    30  * Sets the error. 
     30 * Sets the error.
    3131 *
    3232 * Assumes the RTL has been locked.
  • cpukit/libdl/rtl-mdreloc-arm.c

    r86e79d7 rf59d435d  
    6868
    6969uint32_t
    70 rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj,
    71                              const Elf_Shdr*        shdr)
     70rtems_rtl_elf_section_flags (const rtems_rtl_obj* obj,
     71                             const Elf_Shdr*      shdr)
    7272{
    7373  uint32_t flags = 0;
     
    8484
    8585bool
    86 rtems_rtl_elf_relocate_rela (const rtems_rtl_obj_t*      obj,
    87                              const Elf_Rela*             rela,
    88                              const rtems_rtl_obj_sect_t* sect,
    89                              const char*                 symname,
    90                              const Elf_Byte              syminfo,
    91                              const Elf_Word              symvalue)
     86rtems_rtl_elf_relocate_rela (const rtems_rtl_obj*      obj,
     87                             const Elf_Rela*           rela,
     88                             const rtems_rtl_obj_sect* sect,
     89                             const char*               symname,
     90                             const Elf_Byte            syminfo,
     91                             const Elf_Word            symvalue)
    9292{
    9393  rtems_rtl_set_error (EINVAL, "rela type record not supported");
     
    9696
    9797bool
    98 rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t*      obj,
    99                             const Elf_Rel*              rel,
    100                             const rtems_rtl_obj_sect_t* sect,
    101                             const char*                 symname,
    102                             const Elf_Byte              syminfo,
    103                             const Elf_Word              symvalue)
     98rtems_rtl_elf_relocate_rel (const rtems_rtl_obj*      obj,
     99                            const Elf_Rel*            rel,
     100                            const rtems_rtl_obj_sect* sect,
     101                            const char*               symname,
     102                            const Elf_Byte            syminfo,
     103                            const Elf_Word            symvalue)
    104104{
    105105  Elf_Addr *where;
     
    358358
    359359bool
    360 rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj,
    361                             const char*            name,
    362                             uint32_t               flags)
     360rtems_rtl_elf_unwind_parse (const rtems_rtl_obj* obj,
     361                            const char*          name,
     362                            uint32_t             flags)
    363363{
    364364  /*
     
    369369
    370370bool
    371 rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj)
     371rtems_rtl_elf_unwind_register (rtems_rtl_obj* obj)
    372372{
    373373  return true;
     
    375375
    376376bool
    377 rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj)
     377rtems_rtl_elf_unwind_deregister (rtems_rtl_obj* obj)
    378378{
    379379  obj->loader = NULL;
     
    407407                                     int*        nrec)
    408408{
    409   rtems_rtl_data_t* rtl;
     409  rtems_rtl_data rtl;
    410410  rtems_chain_node* node;
    411411  __EIT_entry*      exidx_start = &__exidx_start;
     
    416416  node = rtems_chain_first (&rtl->objects);
    417417  while (!rtems_chain_is_tail (&rtl->objects, node)) {
    418     rtems_rtl_obj_t* obj = (rtems_rtl_obj_t*) node;
     418    rtems_rtl_obj* obj = (rtems_rtl_obj*) node;
    419419    if (rtems_rtl_obj_text_inside (obj, (void*) return_address)) {
    420420      exidx_start = (__EIT_entry*) obj->eh_base;
  • cpukit/libdl/rtl-mdreloc-bfin.c

    r86e79d7 rf59d435d  
    3434
    3535bool
    36 rtems_rtl_elf_relocate_rela (const rtems_rtl_obj_t*      obj,
    37                              const Elf_Rela*             rela,
    38                              const rtems_rtl_obj_sect_t* sect,
    39                              const char*                 symname,
    40                              const Elf_Byte              syminfo,
    41                              const Elf_Word              symvalue)
     36rtems_rtl_elf_relocate_rela (const rtems_rtl_obj*      obj,
     37                             const Elf_Rela*           rela,
     38                             const rtems_rtl_obj_sect* sect,
     39                             const char*               symname,
     40                             const Elf_Byte            syminfo,
     41                             const Elf_Word            symvalue)
    4242{
    43   Elf_Addr      target = 0;
    44   Elf_Addr      *where;
    45   Elf_Word      tmp;
    46   Elf_Word      size; //byte
     43  Elf_Addr target = 0;
     44  Elf_Addr *where;
     45  Elf_Word tmp;
     46  Elf_Word size; //byte
    4747
    4848  where = (Elf_Addr *)(sect->base + rela->r_offset);
     
    113113
    114114bool
    115 rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t*      obj,
    116                             const Elf_Rel*              rel,
    117                             const rtems_rtl_obj_sect_t* sect,
    118                             const char*                 symname,
    119                             const Elf_Byte              syminfo,
    120                             const Elf_Word              symvalue)
     115rtems_rtl_elf_relocate_rel (const rtems_rtl_obj*      obj,
     116                            const Elf_Rel*            rel,
     117                            const rtems_rtl_obj_sect* sect,
     118                            const char*               symname,
     119                            const Elf_Byte            syminfo,
     120                            const Elf_Word            symvalue)
    121121{
    122122  rtems_rtl_set_error (EINVAL, "rel type record not supported");
     
    125125
    126126bool
    127 rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj,
    128                             const char*            name,
    129                             uint32_t               flags)
     127rtems_rtl_elf_unwind_parse (const rtems_rtl_obj* obj,
     128                            const char*          name,
     129                            uint32_t             flags)
    130130{
    131131  return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags);
     
    133133
    134134bool
    135 rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj)
     135rtems_rtl_elf_unwind_register (rtems_rtl_obj* obj)
    136136{
    137137  return rtems_rtl_elf_unwind_dw2_register (obj);
     
    139139
    140140bool
    141 rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj)
     141rtems_rtl_elf_unwind_deregister (rtems_rtl_obj* obj)
    142142{
    143143  return rtems_rtl_elf_unwind_dw2_deregister (obj);
  • cpukit/libdl/rtl-mdreloc-h8300.c

    r86e79d7 rf59d435d  
    1414
    1515uint32_t
    16 rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj,
    17                              const Elf_Shdr*        shdr)
     16rtems_rtl_elf_section_flags (const rtems_rtl_obj* obj,
     17                             const Elf_Shdr*      shdr)
    1818{
    1919  return 0;
     
    2727
    2828bool
    29 rtems_rtl_elf_relocate_rela (const rtems_rtl_obj_t*      obj,
    30                              const Elf_Rela*             rela,
    31                              const rtems_rtl_obj_sect_t* sect,
    32                              const char*                 symname,
    33                              const Elf_Byte              syminfo,
    34                              const Elf_Word              symvalue)
     29rtems_rtl_elf_relocate_rela (const rtems_rtl_obj*      obj,
     30                             const Elf_Rela*           rela,
     31                             const rtems_rtl_obj_sect* sect,
     32                             const char*               symname,
     33                             const Elf_Byte            syminfo,
     34                             const Elf_Word            symvalue)
    3535{
    36   Elf_Addr      *where;
    37   Elf_Word      tmp;
     36  Elf_Addr *where;
     37  Elf_Word tmp;
    3838
    3939  where = (Elf_Addr *)(sect->base + rela->r_offset);
     
    9999
    100100bool
    101 rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t*      obj,
    102                             const Elf_Rel*              rel,
    103                             const rtems_rtl_obj_sect_t* sect,
    104                             const char*                 symname,
    105                             const Elf_Byte              syminfo,
    106                             const Elf_Word              symvalue)
     101rtems_rtl_elf_relocate_rel (const rtems_rtl_obj*      obj,
     102                            const Elf_Rel*            rel,
     103                            const rtems_rtl_obj_sect* sect,
     104                            const char*               symname,
     105                            const Elf_Byte            syminfo,
     106                            const Elf_Word            symvalue)
    107107{
    108108  rtems_rtl_set_error (EINVAL, "rel type record not supported");
     
    111111
    112112bool
    113 rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj,
    114                             const char*            name,
    115                             uint32_t               flags)
     113rtems_rtl_elf_unwind_parse (const rtems_rtl_obj* obj,
     114                            const char*          name,
     115                            uint32_t             flags)
    116116{
    117117  return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags);
     
    119119
    120120bool
    121 rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj)
     121rtems_rtl_elf_unwind_register (rtems_rtl_obj* obj)
    122122{
    123123  return rtems_rtl_elf_unwind_dw2_register (obj);
     
    125125
    126126bool
    127 rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj)
     127rtems_rtl_elf_unwind_deregister (rtems_rtl_obj* obj)
    128128{
    129129  return rtems_rtl_elf_unwind_dw2_deregister (obj);
  • cpukit/libdl/rtl-mdreloc-i386.c

    r86e79d7 rf59d435d  
    2020
    2121uint32_t
    22 rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj,
    23                              const Elf_Shdr*        shdr)
     22rtems_rtl_elf_section_flags (const rtems_rtl_obj* obj,
     23                             const Elf_Shdr*      shdr)
    2424{
    2525  return 0;
     
    3333
    3434bool
    35 rtems_rtl_elf_relocate_rela (const rtems_rtl_obj_t*      obj,
    36                              const Elf_Rela*             rel,
    37                              const rtems_rtl_obj_sect_t* sect,
    38                              const char*                 symname,
    39                              const Elf_Byte              syminfo,
    40                              const Elf_Word              symvalue)
     35rtems_rtl_elf_relocate_rela (const rtems_rtl_obj*      obj,
     36                             const Elf_Rela*           rel,
     37                             const rtems_rtl_obj_sect* sect,
     38                             const char*               symname,
     39                             const Elf_Byte            syminfo,
     40                             const Elf_Word            symvalue)
    4141{
    4242  rtems_rtl_set_error (EINVAL, "rela type record not supported");
     
    4545
    4646bool
    47 rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t*      obj,
    48                             const Elf_Rel*              rel,
    49                             const rtems_rtl_obj_sect_t* sect,
    50                             const char*                 symname,
    51                             const Elf_Byte              syminfo,
    52                             const Elf_Word              symvalue)
     47rtems_rtl_elf_relocate_rel (const rtems_rtl_obj*      obj,
     48                            const Elf_Rel*            rel,
     49                            const rtems_rtl_obj_sect* sect,
     50                            const char*               symname,
     51                            const Elf_Byte            syminfo,
     52                            const Elf_Word            symvalue)
    5353{
    54         Elf_Addr  target = 0;
     54  Elf_Addr  target = 0;
    5555  Elf_Addr* where;
    5656  Elf_Addr  tmp;
     
    113113
    114114bool
    115 rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj,
    116                             const char*            name,
    117                             uint32_t               flags)
     115rtems_rtl_elf_unwind_parse (const rtems_rtl_obj* obj,
     116                            const char*          name,
     117                            uint32_t             flags)
    118118{
    119119  return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags);
     
    121121
    122122bool
    123 rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj)
     123rtems_rtl_elf_unwind_register (rtems_rtl_obj* obj)
    124124{
    125125  return rtems_rtl_elf_unwind_dw2_register (obj);
     
    127127
    128128bool
    129 rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj)
     129rtems_rtl_elf_unwind_deregister (rtems_rtl_obj* obj)
    130130{
    131131  return rtems_rtl_elf_unwind_dw2_deregister (obj);
  • cpukit/libdl/rtl-mdreloc-lm32.c

    r86e79d7 rf59d435d  
    1414
    1515uint32_t
    16 rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj,
    17                              const Elf_Shdr*        shdr)
     16rtems_rtl_elf_section_flags (const rtems_rtl_obj* obj,
     17                             const Elf_Shdr*      shdr)
    1818{
    1919  return 0;
     
    2727
    2828bool
    29 rtems_rtl_elf_relocate_rela (const rtems_rtl_obj_t*      obj,
    30                              const Elf_Rela*             rela,
    31                              const rtems_rtl_obj_sect_t* sect,
    32                              const char*                 symname,
    33                              const Elf_Byte              syminfo,
    34                              const Elf_Word              symvalue)
     29rtems_rtl_elf_relocate_rela (const rtems_rtl_obj*      obj,
     30                             const Elf_Rela*           rela,
     31                             const rtems_rtl_obj_sect* sect,
     32                             const char*               symname,
     33                             const Elf_Byte            syminfo,
     34                             const Elf_Word            symvalue)
    3535{
    3636  Elf_Addr *where;
     
    118118
    119119bool
    120 rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t*      obj,
    121                             const Elf_Rel*              rel,
    122                             const rtems_rtl_obj_sect_t* sect,
    123                             const char*                 symname,
    124                             const Elf_Byte              syminfo,
    125                             const Elf_Word              symvalue)
     120rtems_rtl_elf_relocate_rel (const rtems_rtl_obj*      obj,
     121                            const Elf_Rel*            rel,
     122                            const rtems_rtl_obj_sect* sect,
     123                            const char*               symname,
     124                            const Elf_Byte            syminfo,
     125                            const Elf_Word            symvalue)
    126126{
    127127  rtems_rtl_set_error (EINVAL, "rela type record not supported");
     
    130130
    131131bool
    132 rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj,
    133                             const char*            name,
    134                             uint32_t               flags)
     132rtems_rtl_elf_unwind_parse (const rtems_rtl_obj* obj,
     133                            const char*          name,
     134                            uint32_t             flags)
    135135{
    136136  return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags);
     
    138138
    139139bool
    140 rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj)
     140rtems_rtl_elf_unwind_register (rtems_rtl_obj* obj)
    141141{
    142142  return rtems_rtl_elf_unwind_dw2_register (obj);
     
    144144
    145145bool
    146 rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj)
     146rtems_rtl_elf_unwind_deregister (rtems_rtl_obj* obj)
    147147{
    148148  return rtems_rtl_elf_unwind_dw2_deregister (obj);
  • cpukit/libdl/rtl-mdreloc-m68k.c

    r86e79d7 rf59d435d  
    3434
    3535uint32_t
    36 rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj,
    37                              const Elf_Shdr*        shdr)
     36rtems_rtl_elf_section_flags (const rtems_rtl_obj* obj,
     37                             const Elf_Shdr*      shdr)
    3838{
    3939  return 0;
     
    4747
    4848bool
    49 rtems_rtl_elf_relocate_rela (const rtems_rtl_obj_t*      obj,
    50                              const Elf_Rela*             rela,
    51                              const rtems_rtl_obj_sect_t* sect,
    52                              const char*                 symnane,
    53                              const Elf_Byte              syminfo,
    54                              const Elf_Word              symvalue)
     49rtems_rtl_elf_relocate_rela (const rtems_rtl_obj*      obj,
     50                             const Elf_Rela*           rela,
     51                             const rtems_rtl_obj_sect* sect,
     52                             const char*               symnane,
     53                             const Elf_Byte            syminfo,
     54                             const Elf_Word            symvalue)
    5555{
    56         Elf_Addr  target = 0;
     56  Elf_Addr  target = 0;
    5757  Elf_Addr* where;
    5858  Elf_Word  tmp;
     
    146146
    147147bool
    148 rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t*      obj,
    149                             const Elf_Rel*              rel,
    150                             const rtems_rtl_obj_sect_t* sect,
    151                             const char*                 symname,
    152                             const Elf_Byte              syminfo,
    153                             const Elf_Word              symvalue)
     148rtems_rtl_elf_relocate_rel (const rtems_rtl_obj*      obj,
     149                            const Elf_Rel*            rel,
     150                            const rtems_rtl_obj_sect* sect,
     151                            const char*               symname,
     152                            const Elf_Byte            syminfo,
     153                            const Elf_Word            symvalue)
    154154{
    155155  rtems_rtl_set_error (EINVAL, "rel type record not supported");
     
    158158
    159159bool
    160 rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj,
    161                             const char*            name,
    162                             uint32_t               flags)
     160rtems_rtl_elf_unwind_parse (const rtems_rtl_obj* obj,
     161                            const char*          name,
     162                            uint32_t             flags)
    163163{
    164164  return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags);
     
    166166
    167167bool
    168 rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj)
     168rtems_rtl_elf_unwind_register (rtems_rtl_obj* obj)
    169169{
    170170  return rtems_rtl_elf_unwind_dw2_register (obj);
     
    172172
    173173bool
    174 rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj)
     174rtems_rtl_elf_unwind_deregister (rtems_rtl_obj* obj)
    175175{
    176176  return rtems_rtl_elf_unwind_dw2_deregister (obj);
  • cpukit/libdl/rtl-mdreloc-mips.c

    r86e79d7 rf59d435d  
    1414
    1515uint32_t
    16 rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj,
    17                              const Elf_Shdr*        shdr)
     16rtems_rtl_elf_section_flags (const rtems_rtl_obj* obj,
     17                             const Elf_Shdr*      shdr)
    1818{
    1919  return 0;
     
    2727
    2828bool
    29 rtems_rtl_elf_relocate_rela (const rtems_rtl_obj_t*      obj,
    30                              const Elf_Rela*             rela,
    31                              const rtems_rtl_obj_sect_t* sect,
    32                              const char*                 symname,
    33                              const Elf_Byte              syminfo,
    34                              const Elf_Word              symvalue)
     29rtems_rtl_elf_relocate_rela (const rtems_rtl_obj*      obj,
     30                             const Elf_Rela*           rela,
     31                             const rtems_rtl_obj_sect* sect,
     32                             const char*               symname,
     33                             const Elf_Byte            syminfo,
     34                             const Elf_Word            symvalue)
    3535{
    3636  rtems_rtl_set_error (EINVAL, "rela type record not supported");
     
    4747 */
    4848bool
    49 rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t*      obj,
    50                             const Elf_Rel*              rel,
    51                             const rtems_rtl_obj_sect_t* sect,
    52                             const char*                 symname,
    53                             const Elf_Byte              syminfo,
    54                             const Elf_Word              symvalue)
     49rtems_rtl_elf_relocate_rel (const rtems_rtl_obj*      obj,
     50                            const Elf_Rel*            rel,
     51                            const rtems_rtl_obj_sect* sect,
     52                            const char*               symname,
     53                            const Elf_Byte            syminfo,
     54                            const Elf_Word            symvalue)
    5555{
    5656  Elf_Addr *where;
     
    200200
    201201bool
    202 rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj,
    203                             const char*            name,
    204                             uint32_t               flags)
     202rtems_rtl_elf_unwind_parse (const rtems_rtl_obj* obj,
     203                            const char*          name,
     204                            uint32_t             flags)
    205205{
    206206  return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags);
     
    208208
    209209bool
    210 rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj)
     210rtems_rtl_elf_unwind_register (rtems_rtl_obj* obj)
    211211{
    212212  return rtems_rtl_elf_unwind_dw2_register (obj);
     
    214214
    215215bool
    216 rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj)
     216rtems_rtl_elf_unwind_deregister (rtems_rtl_obj* obj)
    217217{
    218218  return rtems_rtl_elf_unwind_dw2_deregister (obj);
  • cpukit/libdl/rtl-mdreloc-moxie.c

    r86e79d7 rf59d435d  
    1515
    1616uint32_t
    17 rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj,
    18                              const Elf_Shdr*        shdr)
     17rtems_rtl_elf_section_flags (const rtems_rtl_obj* obj,
     18                             const Elf_Shdr*      shdr)
    1919{
    2020  return 0;
     
    2828
    2929bool
    30 rtems_rtl_elf_relocate_rela (const rtems_rtl_obj_t*      obj,
    31                              const Elf_Rela*             rela,
    32                              const rtems_rtl_obj_sect_t* sect,
    33                              const char*                 symname,
    34                              const Elf_Byte              syminfo,
    35                              const Elf_Word              symvalue)
     30rtems_rtl_elf_relocate_rela (const rtems_rtl_obj*      obj,
     31                             const Elf_Rela*           rela,
     32                             const rtems_rtl_obj_sect* sect,
     33                             const char*               symname,
     34                             const Elf_Byte            syminfo,
     35                             const Elf_Word            symvalue)
    3636{
    3737  Elf_Addr *where;
     
    8686
    8787bool
    88 rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t*      obj,
    89                             const Elf_Rel*              rel,
    90                             const rtems_rtl_obj_sect_t* sect,
    91                             const char*                 symname,
    92                             const Elf_Byte              syminfo,
    93                             const Elf_Word              symvalue)
     88rtems_rtl_elf_relocate_rel (const rtems_rtl_obj*      obj,
     89                            const Elf_Rel*            rel,
     90                            const rtems_rtl_obj_sect* sect,
     91                            const char*               symname,
     92                            const Elf_Byte            syminfo,
     93                            const Elf_Word            symvalue)
    9494{
    9595  rtems_rtl_set_error (EINVAL, "rel type record not supported");
     
    9898
    9999bool
    100 rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj,
    101                             const char*            name,
    102                             uint32_t               flags)
     100rtems_rtl_elf_unwind_parse (const rtems_rtl_obj* obj,
     101                            const char*          name,
     102                            uint32_t             flags)
    103103{
    104104  return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags);
     
    106106
    107107bool
    108 rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj)
     108rtems_rtl_elf_unwind_register (rtems_rtl_obj* obj)
    109109{
    110110  return rtems_rtl_elf_unwind_dw2_register (obj);
     
    112112
    113113bool
    114 rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj)
     114rtems_rtl_elf_unwind_deregister (rtems_rtl_obj* obj)
    115115{
    116116  return rtems_rtl_elf_unwind_dw2_deregister (obj);
  • cpukit/libdl/rtl-mdreloc-powerpc.c

    r86e79d7 rf59d435d  
    2525
    2626uint32_t
    27 rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj,
    28                              const Elf_Shdr*        shdr)
     27rtems_rtl_elf_section_flags (const rtems_rtl_obj* obj,
     28                             const Elf_Shdr*      shdr)
    2929{
    3030  return 0;
     
    3838
    3939bool
    40 rtems_rtl_elf_relocate_rela (const rtems_rtl_obj_t*      obj,
    41                              const Elf_Rela*             rela,
    42                              const rtems_rtl_obj_sect_t* sect,
    43                              const char*                 symname,
    44                              const Elf_Byte              syminfo,
    45                              const Elf_Word              symvalue)
     40rtems_rtl_elf_relocate_rela (const rtems_rtl_obj*      obj,
     41                             const Elf_Rela*           rela,
     42                             const rtems_rtl_obj_sect* sect,
     43                             const char*               symname,
     44                             const Elf_Byte            syminfo,
     45                             const Elf_Word            symvalue)
    4646{
    4747  Elf_Addr* where;
     
    199199
    200200bool
    201 rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t*      obj,
    202                             const Elf_Rel*              rel,
    203                             const rtems_rtl_obj_sect_t* sect,
    204                             const char*                 symname,
    205                             const Elf_Byte              syminfo,
    206                             const Elf_Word              symvalue)
     201rtems_rtl_elf_relocate_rel (const rtems_rtl_obj*      obj,
     202                            const Elf_Rel*            rel,
     203                            const rtems_rtl_obj_sect* sect,
     204                            const char*               symname,
     205                            const Elf_Byte            syminfo,
     206                            const Elf_Word            symvalue)
    207207{
    208208  printf ("rtl: rel type record not supported; please report\n");
     
    211211
    212212bool
    213 rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj,
    214                             const char*            name,
    215                             uint32_t               flags)
     213rtems_rtl_elf_unwind_parse (const rtems_rtl_obj* obj,
     214                            const char*          name,
     215                            uint32_t             flags)
    216216{
    217217  return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags);
     
    219219
    220220bool
    221 rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj)
     221rtems_rtl_elf_unwind_register (rtems_rtl_obj* obj)
    222222{
    223223  return rtems_rtl_elf_unwind_dw2_register (obj);
     
    225225
    226226bool
    227 rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj)
     227rtems_rtl_elf_unwind_deregister (rtems_rtl_obj* obj)
    228228{
    229229  return rtems_rtl_elf_unwind_dw2_deregister (obj);
  • cpukit/libdl/rtl-mdreloc-sparc.c

    r86e79d7 rf59d435d  
    132132
    133133uint32_t
    134 rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj,
    135                              const Elf_Shdr*        shdr)
     134rtems_rtl_elf_section_flags (const rtems_rtl_obj* obj,
     135                             const Elf_Shdr*      shdr)
    136136{
    137137  return 0;
     
    145145
    146146bool
    147 rtems_rtl_elf_relocate_rela (const rtems_rtl_obj_t*      obj,
    148                              const Elf_Rela*             rela,
    149                              const rtems_rtl_obj_sect_t* sect,
    150                              const char*                 symname,
    151                              const Elf_Byte              syminfo,
    152                              const Elf_Word              symvalue)
     147rtems_rtl_elf_relocate_rela (const rtems_rtl_obj*      obj,
     148                             const Elf_Rela*           rela,
     149                             const rtems_rtl_obj_sect* sect,
     150                             const char*               symname,
     151                             const Elf_Byte            syminfo,
     152                             const Elf_Word            symvalue)
    153153{
    154154  Elf_Addr *where;
     
    261261
    262262bool
    263 rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t*      obj,
    264                             const Elf_Rel*              rel,
    265                             const rtems_rtl_obj_sect_t* sect,
    266                             const char*                 symname,
    267                             const Elf_Byte              syminfo,
    268                             const Elf_Word              symvalue)
     263rtems_rtl_elf_relocate_rel (const rtems_rtl_obj*      obj,
     264                            const Elf_Rel*            rel,
     265                            const rtems_rtl_obj_sect* sect,
     266                            const char*               symname,
     267                            const Elf_Byte            syminfo,
     268                            const Elf_Word            symvalue)
    269269{
    270270  printf ("rtl: rel type record not supported; please report\n");
     
    273273
    274274bool
    275 rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj,
    276                             const char*            name,
    277                             uint32_t               flags)
     275rtems_rtl_elf_unwind_parse (const rtems_rtl_obj* obj,
     276                            const char*          name,
     277                            uint32_t             flags)
    278278{
    279279  return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags);
     
    281281
    282282bool
    283 rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj)
     283rtems_rtl_elf_unwind_register (rtems_rtl_obj* obj)
    284284{
    285285  return rtems_rtl_elf_unwind_dw2_register (obj);
     
    287287
    288288bool
    289 rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj)
     289rtems_rtl_elf_unwind_deregister (rtems_rtl_obj* obj)
    290290{
    291291  return rtems_rtl_elf_unwind_dw2_deregister (obj);
  • cpukit/libdl/rtl-mdreloc-v850.c

    r86e79d7 rf59d435d  
    1515
    1616uint32_t
    17 rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj,
    18                              const Elf_Shdr*        shdr)
     17rtems_rtl_elf_section_flags (const rtems_rtl_obj* obj,
     18                             const Elf_Shdr*      shdr)
    1919{
    2020  return 0;
     
    2828
    2929bool
    30 rtems_rtl_elf_relocate_rela (const rtems_rtl_obj_t*      obj,
    31                              const Elf_Rela*             rela,
    32                              const rtems_rtl_obj_sect_t* sect,
    33                              const char*                 symname,
    34                              const Elf_Byte              syminfo,
    35                              const Elf_Word              symvalue)
     30rtems_rtl_elf_relocate_rela (const rtems_rtl_obj*      obj,
     31                             const Elf_Rela*           rela,
     32                             const rtems_rtl_obj_sect* sect,
     33                             const char*               symname,
     34                             const Elf_Byte            syminfo,
     35                             const Elf_Word            symvalue)
    3636{
    3737  Elf_Addr *where;
     
    9595
    9696bool
    97 rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t*      obj,
    98                             const Elf_Rel*              rel,
    99                             const rtems_rtl_obj_sect_t* sect,
    100                             const char*                 symname,
    101                             const Elf_Byte              syminfo,
    102                             const Elf_Word              symvalue)
     97rtems_rtl_elf_relocate_rel (const rtems_rtl_obj*      obj,
     98                            const Elf_Rel*            rel,
     99                            const rtems_rtl_obj_sect* sect,
     100                            const char*               symname,
     101                            const Elf_Byte            syminfo,
     102                            const Elf_Word            symvalue)
    103103{
    104104  rtems_rtl_set_error (EINVAL, "rel type record not supported");
     
    107107
    108108bool
    109 rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj,
    110                             const char*            name,
    111                             uint32_t               flags)
     109rtems_rtl_elf_unwind_parse (const rtems_rtl_obj* obj,
     110                            const char*          name,
     111                            uint32_t             flags)
    112112{
    113113  return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags);
     
    115115
    116116bool
    117 rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj)
     117rtems_rtl_elf_unwind_register (rtems_rtl_obj* obj)
    118118{
    119119  return rtems_rtl_elf_unwind_dw2_register (obj);
     
    121121
    122122bool
    123 rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj)
     123rtems_rtl_elf_unwind_deregister (rtems_rtl_obj* obj)
    124124{
    125125  return rtems_rtl_elf_unwind_dw2_deregister (obj);
  • cpukit/libdl/rtl-obj-cache.c

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    3232
    3333bool
    34 rtems_rtl_obj_cache_open (rtems_rtl_obj_cache_t* cache, size_t size)
     34rtems_rtl_obj_cache_open (rtems_rtl_obj_cache* cache, size_t size)
    3535{
    3636  cache->fd        = -1;
     
    4949
    5050void
    51 rtems_rtl_obj_cache_close (rtems_rtl_obj_cache_t* cache)
     51rtems_rtl_obj_cache_close (rtems_rtl_obj_cache* cache)
    5252{
    5353  if (rtems_rtl_trace (RTEMS_RTL_TRACE_CACHE))
     
    6161
    6262void
    63 rtems_rtl_obj_cache_flush (rtems_rtl_obj_cache_t* cache)
     63rtems_rtl_obj_cache_flush (rtems_rtl_obj_cache* cache)
    6464{
    6565  if (rtems_rtl_trace (RTEMS_RTL_TRACE_CACHE))
     
    7272
    7373bool
    74 rtems_rtl_obj_cache_read (rtems_rtl_obj_cache_t* cache,
    75                           int                    fd,
    76                           off_t                  offset,
    77                           void**                 buffer,
    78                           size_t*                length)
     74rtems_rtl_obj_cache_read (rtems_rtl_obj_cache* cache,
     75                          int                  fd,
     76                          off_t                offset,
     77                          void**               buffer,
     78                          size_t*              length)
    7979{
    8080  struct stat sb;
     
    239239
    240240bool
    241 rtems_rtl_obj_cache_read_byval (rtems_rtl_obj_cache_t* cache,
    242                                 int                    fd,
    243                                 off_t                  offset,
    244                                 void*                  buffer,
    245                                 size_t                 length)
     241rtems_rtl_obj_cache_read_byval (rtems_rtl_obj_cache* cache,
     242                                int                  fd,
     243                                off_t                offset,
     244                                void*                buffer,
     245                                size_t               length)
    246246{
    247247  void*  cbuffer = 0;
  • cpukit/libdl/rtl-obj-comp.c

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    3232
    3333bool
    34 rtems_rtl_obj_comp_open (rtems_rtl_obj_comp_t* comp,
    35                          size_t                 size)
     34rtems_rtl_obj_comp_open (rtems_rtl_obj_comp* comp,
     35                         size_t              size)
    3636{
    3737  comp->cache  = NULL;
     
    5252
    5353void
    54 rtems_rtl_obj_comp_close (rtems_rtl_obj_comp_t* comp)
     54rtems_rtl_obj_comp_close (rtems_rtl_obj_comp* comp)
    5555{
    5656  rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, comp->buffer);
     
    6565
    6666void
    67 rtems_rtl_obj_comp_set (rtems_rtl_obj_comp_t*  comp,
    68                         rtems_rtl_obj_cache_t* cache,
    69                         int                    fd,
    70                         int                    compression,
    71                         off_t                  offset)
     67rtems_rtl_obj_comp_set (rtems_rtl_obj_comp*  comp,
     68                        rtems_rtl_obj_cache* cache,
     69                        int                  fd,
     70                        int                  compression,
     71                        off_t                offset)
    7272{
    7373  comp->cache = cache;
     
    8080
    8181bool
    82 rtems_rtl_obj_comp_read (rtems_rtl_obj_comp_t* comp,
    83                          void*                 buffer,
    84                          size_t                length)
     82rtems_rtl_obj_comp_read (rtems_rtl_obj_comp* comp,
     83                         void*               buffer,
     84                         size_t              length)
    8585{
    8686  uint8_t* bin = buffer;
  • cpukit/libdl/rtl-obj.c

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    5252 */
    5353#define RTEMS_RTL_LOADERS (RTEMS_RTL_ELF_LOADER_COUNT + RTEMS_RTL_RAP_LOADER_COUNT)
    54 static const rtems_rtl_loader_table_t loaders[RTEMS_RTL_LOADERS] =
     54static const rtems_rtl_loader_table loaders[RTEMS_RTL_LOADERS] =
    5555{
    5656#if RTEMS_RTL_RAP_LOADER
     
    6969};
    7070
    71 rtems_rtl_obj_t*
     71rtems_rtl_obj*
    7272rtems_rtl_obj_alloc (void)
    7373{
    74   rtems_rtl_obj_t* obj = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT,
    75                                               sizeof (rtems_rtl_obj_t),
    76                                               true);
     74  rtems_rtl_obj* obj = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT,
     75                                            sizeof (rtems_rtl_obj),
     76                                            true);
    7777  if (obj)
    7878  {
     
    9090
    9191static void
    92 rtems_rtl_obj_free_names (rtems_rtl_obj_t* obj)
     92rtems_rtl_obj_free_names (rtems_rtl_obj* obj)
    9393{
    9494  if (rtems_rtl_obj_oname_valid (obj))
     
    101101
    102102bool
    103 rtems_rtl_obj_free (rtems_rtl_obj_t* obj)
     103rtems_rtl_obj_free (rtems_rtl_obj* obj)
    104104{
    105105  if (obj->users || ((obj->flags & RTEMS_RTL_OBJ_LOCKED) != 0))
     
    123123
    124124bool
    125 rtems_rtl_obj_unresolved (rtems_rtl_obj_t* obj)
     125rtems_rtl_obj_unresolved (rtems_rtl_obj* obj)
    126126{
    127127  return (obj->flags & RTEMS_RTL_OBJ_UNRESOLVED) != 0 ? true : false;
     
    209209
    210210static bool
    211 rtems_rtl_obj_parse_name (rtems_rtl_obj_t* obj, const char* name)
     211rtems_rtl_obj_parse_name (rtems_rtl_obj* obj, const char* name)
    212212{
    213213  return rtems_rtl_parse_name (name, &(obj->aname), &(obj->oname), &(obj->ooffset));
     
    263263  uint32_t mask; /**< The selection mask to sum. */
    264264  size_t   size; /**< The size of all section fragments. */
    265 } rtems_rtl_obj_sect_summer_t;
     265} rtems_rtl_obj_sect_summer_data;
    266266
    267267static bool
    268268rtems_rtl_obj_sect_summer (rtems_chain_node* node, void* data)
    269269{
    270   rtems_rtl_obj_sect_t*        sect = (rtems_rtl_obj_sect_t*) node;
    271   rtems_rtl_obj_sect_summer_t* summer = data;
     270  rtems_rtl_obj_sect*             sect = (rtems_rtl_obj_sect*) node;
     271  rtems_rtl_obj_sect_summer_data* summer = data;
    272272  if ((sect->flags & summer->mask) == summer->mask)
    273273    summer->size =
     
    277277
    278278static size_t
    279 rtems_rtl_obj_section_size (const rtems_rtl_obj_t* obj, uint32_t mask)
    280 {
    281   rtems_rtl_obj_sect_summer_t summer;
     279rtems_rtl_obj_section_size (const rtems_rtl_obj* obj, uint32_t mask)
     280{
     281  rtems_rtl_obj_sect_summer_data summer;
    282282  summer.mask = mask;
    283283  summer.size = 0;
     
    296296  uint32_t mask;      /**< The selection mask to look for alignment. */
    297297  uint32_t alignment; /**< The alignment of the section type. */
    298 } rtems_rtl_obj_sect_aligner_t;
     298} rtems_rtl_obj_sect_aligner_data;
    299299
    300300/**
     
    304304rtems_rtl_obj_sect_aligner (rtems_chain_node* node, void* data)
    305305{
    306   rtems_rtl_obj_sect_t*         sect = (rtems_rtl_obj_sect_t*) node;
    307   rtems_rtl_obj_sect_aligner_t* aligner = data;
     306  rtems_rtl_obj_sect*              sect = (rtems_rtl_obj_sect*) node;
     307  rtems_rtl_obj_sect_aligner_data* aligner = data;
    308308  if ((sect->flags & aligner->mask) == aligner->mask)
    309309  {
     
    315315
    316316static size_t
    317 rtems_rtl_obj_section_alignment (const rtems_rtl_obj_t* obj, uint32_t mask)
    318 {
    319   rtems_rtl_obj_sect_aligner_t aligner;
     317rtems_rtl_obj_section_alignment (const rtems_rtl_obj* obj, uint32_t mask)
     318{
     319  rtems_rtl_obj_sect_aligner_data aligner;
    320320  aligner.mask = mask;
    321321  aligner.alignment = 0;
     
    327327
    328328static bool
    329 rtems_rtl_obj_section_handler (uint32_t                     mask,
    330                                rtems_rtl_obj_t*             obj,
    331                                int                          fd,
    332                                rtems_rtl_obj_sect_handler_t handler,
    333                                void*                        data)
     329rtems_rtl_obj_section_handler (uint32_t                   mask,
     330                               rtems_rtl_obj*             obj,
     331                               int                        fd,
     332                               rtems_rtl_obj_sect_handler handler,
     333                               void*                      data)
    334334{
    335335  rtems_chain_node* node = rtems_chain_first (&obj->sections);
    336336  while (!rtems_chain_is_tail (&obj->sections, node))
    337337  {
    338     rtems_rtl_obj_sect_t* sect = (rtems_rtl_obj_sect_t*) node;
     338    rtems_rtl_obj_sect* sect = (rtems_rtl_obj_sect*) node;
    339339    if ((sect->flags & mask) != 0)
    340340    {
     
    348348
    349349bool
    350 rtems_rtl_match_name (rtems_rtl_obj_t* obj, const char* name)
     350rtems_rtl_match_name (rtems_rtl_obj* obj, const char* name)
    351351{
    352352  const char* n1 = obj->oname;
     
    364364
    365365bool
    366 rtems_rtl_obj_find_file (rtems_rtl_obj_t* obj, const char* name)
    367 {
    368   const char*       pname;
    369   rtems_rtl_data_t* rtl;
     366rtems_rtl_obj_find_file (rtems_rtl_obj* obj, const char* name)
     367{
     368  const char*     pname;
     369  rtems_rtl_data* rtl;
    370370
    371371  /*
     
    404404
    405405bool
    406 rtems_rtl_obj_add_section (rtems_rtl_obj_t* obj,
    407                            int              section,
    408                            const char*      name,
    409                            size_t           size,
    410                            off_t            offset,
    411                            uint32_t         alignment,
    412                            int              link,
    413                            int              info,
    414                            uint32_t         flags)
     406rtems_rtl_obj_add_section (rtems_rtl_obj* obj,
     407                           int            section,
     408                           const char*    name,
     409                           size_t         size,
     410                           off_t          offset,
     411                           uint32_t       alignment,
     412                           int            link,
     413                           int            info,
     414                           uint32_t       flags)
    415415{
    416416  if (size > 0)
    417417  {
    418     rtems_rtl_obj_sect_t* sect = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT,
    419                                                       sizeof (rtems_rtl_obj_sect_t),
    420                                                       true);
     418    rtems_rtl_obj_sect* sect = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT,
     419                                                    sizeof (rtems_rtl_obj_sect),
     420                                                    true);
    421421    if (!sect)
    422422    {
     
    443443
    444444void
    445 rtems_rtl_obj_erase_sections (rtems_rtl_obj_t* obj)
     445rtems_rtl_obj_erase_sections (rtems_rtl_obj* obj)
    446446{
    447447  rtems_chain_node* node = rtems_chain_first (&obj->sections);
    448448  while (!rtems_chain_is_tail (&obj->sections, node))
    449449  {
    450     rtems_rtl_obj_sect_t* sect = (rtems_rtl_obj_sect_t*) node;
    451     rtems_chain_node*     next_node = rtems_chain_next (node);
     450    rtems_rtl_obj_sect* sect = (rtems_rtl_obj_sect*) node;
     451    rtems_chain_node*   next_node = rtems_chain_next (node);
    452452    rtems_chain_extract (node);
    453453    rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, (void*) sect->name);
     
    462462typedef struct
    463463{
    464   rtems_rtl_obj_sect_t*  sect;  /**< The matching section. */
    465   const char*            name;  /**< The name to match. */
    466   int                    index; /**< The index to match. */
    467 } rtems_rtl_obj_sect_finder_t;
     464  rtems_rtl_obj_sect*  sect;  /**< The matching section. */
     465  const char*          name;  /**< The name to match. */
     466  int                  index; /**< The index to match. */
     467} rtems_rtl_obj_sect_finder;
    468468
    469469static bool
    470470rtems_rtl_obj_sect_match_name (rtems_chain_node* node, void* data)
    471471{
    472   rtems_rtl_obj_sect_t*        sect = (rtems_rtl_obj_sect_t*) node;
    473   rtems_rtl_obj_sect_finder_t* match = data;
     472  rtems_rtl_obj_sect*        sect = (rtems_rtl_obj_sect*) node;
     473  rtems_rtl_obj_sect_finder* match = data;
    474474  if (strcmp (sect->name, match->name) == 0)
    475475  {
     
    480480}
    481481
    482 rtems_rtl_obj_sect_t*
    483 rtems_rtl_obj_find_section (const rtems_rtl_obj_t* obj,
    484                             const char*            name)
    485 {
    486   rtems_rtl_obj_sect_finder_t match;
     482rtems_rtl_obj_sect*
     483rtems_rtl_obj_find_section (const rtems_rtl_obj* obj,
     484                            const char*          name)
     485{
     486  rtems_rtl_obj_sect_finder match;
    487487  match.sect = NULL;
    488488  match.name = name;
     
    496496rtems_rtl_obj_sect_match_index (rtems_chain_node* node, void* data)
    497497{
    498   rtems_rtl_obj_sect_t*        sect = (rtems_rtl_obj_sect_t*) node;
    499   rtems_rtl_obj_sect_finder_t* match = data;
     498  rtems_rtl_obj_sect*        sect = (rtems_rtl_obj_sect*) node;
     499  rtems_rtl_obj_sect_finder* match = data;
    500500  if (sect->section == match->index)
    501501  {
     
    506506}
    507507
    508 rtems_rtl_obj_sect_t*
    509 rtems_rtl_obj_find_section_by_index (const rtems_rtl_obj_t* obj,
    510                                      int                    index)
    511 {
    512   rtems_rtl_obj_sect_finder_t match;
     508rtems_rtl_obj_sect*
     509rtems_rtl_obj_find_section_by_index (const rtems_rtl_obj* obj,
     510                                     int                  index)
     511{
     512  rtems_rtl_obj_sect_finder match;
    513513  match.sect = NULL;
    514514  match.index = index;
     
    520520
    521521size_t
    522 rtems_rtl_obj_text_size (const rtems_rtl_obj_t* obj)
     522rtems_rtl_obj_text_size (const rtems_rtl_obj* obj)
    523523{
    524524  return rtems_rtl_obj_section_size (obj, RTEMS_RTL_OBJ_SECT_TEXT);
     
    526526
    527527uint32_t
    528 rtems_rtl_obj_text_alignment (const rtems_rtl_obj_t* obj)
     528rtems_rtl_obj_text_alignment (const rtems_rtl_obj* obj)
    529529{
    530530  return rtems_rtl_obj_section_alignment (obj, RTEMS_RTL_OBJ_SECT_TEXT);
     
    532532
    533533size_t
    534 rtems_rtl_obj_const_size (const rtems_rtl_obj_t* obj)
     534rtems_rtl_obj_const_size (const rtems_rtl_obj* obj)
    535535{
    536536  return rtems_rtl_obj_section_size (obj, RTEMS_RTL_OBJ_SECT_CONST);
     
    538538
    539539uint32_t
    540 rtems_rtl_obj_eh_alignment (const rtems_rtl_obj_t* obj)
     540rtems_rtl_obj_eh_alignment (const rtems_rtl_obj* obj)
    541541{
    542542  return rtems_rtl_obj_section_alignment (obj, RTEMS_RTL_OBJ_SECT_EH);
     
    544544
    545545size_t
    546 rtems_rtl_obj_eh_size (const rtems_rtl_obj_t* obj)
     546rtems_rtl_obj_eh_size (const rtems_rtl_obj* obj)
    547547{
    548548  return rtems_rtl_obj_section_size (obj, RTEMS_RTL_OBJ_SECT_EH);
     
    550550
    551551uint32_t
    552 rtems_rtl_obj_const_alignment (const rtems_rtl_obj_t* obj)
     552rtems_rtl_obj_const_alignment (const rtems_rtl_obj* obj)
    553553{
    554554  return rtems_rtl_obj_section_alignment (obj, RTEMS_RTL_OBJ_SECT_CONST);
     
    556556
    557557size_t
    558 rtems_rtl_obj_data_size (const rtems_rtl_obj_t* obj)
     558rtems_rtl_obj_data_size (const rtems_rtl_obj* obj)
    559559{
    560560  return rtems_rtl_obj_section_size (obj, RTEMS_RTL_OBJ_SECT_DATA);
     
    562562
    563563uint32_t
    564 rtems_rtl_obj_data_alignment (const rtems_rtl_obj_t* obj)
     564rtems_rtl_obj_data_alignment (const rtems_rtl_obj* obj)
    565565{
    566566  return rtems_rtl_obj_section_alignment (obj, RTEMS_RTL_OBJ_SECT_DATA);
     
    568568
    569569size_t
    570 rtems_rtl_obj_bss_size (const rtems_rtl_obj_t* obj)
     570rtems_rtl_obj_bss_size (const rtems_rtl_obj* obj)
    571571{
    572572  return rtems_rtl_obj_section_size (obj, RTEMS_RTL_OBJ_SECT_BSS);
     
    574574
    575575uint32_t
    576 rtems_rtl_obj_bss_alignment (const rtems_rtl_obj_t* obj)
     576rtems_rtl_obj_bss_alignment (const rtems_rtl_obj* obj)
    577577{
    578578  return rtems_rtl_obj_section_alignment (obj, RTEMS_RTL_OBJ_SECT_BSS);
     
    580580
    581581bool
    582 rtems_rtl_obj_relocate (rtems_rtl_obj_t*             obj,
    583                         int                          fd,
    584                         rtems_rtl_obj_sect_handler_t handler,
    585                         void*                        data)
     582rtems_rtl_obj_relocate (rtems_rtl_obj*             obj,
     583                        int                        fd,
     584                        rtems_rtl_obj_sect_handler handler,
     585                        void*                      data)
    586586{
    587587  uint32_t mask = RTEMS_RTL_OBJ_SECT_REL | RTEMS_RTL_OBJ_SECT_RELA;
     
    598598  void     *end_va;
    599599  size_t   cache_line_size;
    600 } rtems_rtl_obj_sect_sync_ctx_t;
     600} rtems_rtl_obj_sect_sync_ctx;
    601601
    602602static bool
    603603rtems_rtl_obj_sect_sync_handler (rtems_chain_node* node, void* data)
    604604{
    605   rtems_rtl_obj_sect_t*          sect = (rtems_rtl_obj_sect_t*) node;
    606   rtems_rtl_obj_sect_sync_ctx_t* sync_ctx = data;
    607   uintptr_t                      old_end;
    608   uintptr_t                      new_start;
     605  rtems_rtl_obj_sect*          sect = (rtems_rtl_obj_sect*) node;
     606  rtems_rtl_obj_sect_sync_ctx* sync_ctx = data;
     607  uintptr_t                    old_end;
     608  uintptr_t                    new_start;
    609609
    610610  if ((sect->flags & sync_ctx->mask) == 0 || sect->size == 0)
     
    634634
    635635void
    636 rtems_rtl_obj_synchronize_cache (rtems_rtl_obj_t* obj)
    637 {
    638   rtems_rtl_obj_sect_sync_ctx_t sync_ctx;
     636rtems_rtl_obj_synchronize_cache (rtems_rtl_obj* obj)
     637{
     638  rtems_rtl_obj_sect_sync_ctx sync_ctx;
    639639
    640640  if (rtems_cache_get_instruction_line_size() == 0)
     
    660660
    661661bool
    662 rtems_rtl_obj_load_symbols (rtems_rtl_obj_t*             obj,
    663                             int                          fd,
    664                             rtems_rtl_obj_sect_handler_t handler,
    665                             void*                        data)
     662rtems_rtl_obj_load_symbols (rtems_rtl_obj*             obj,
     663                            int                        fd,
     664                            rtems_rtl_obj_sect_handler handler,
     665                            void*                      data)
    666666{
    667667  uint32_t mask = RTEMS_RTL_OBJ_SECT_SYM;
     
    670670
    671671static int
    672 rtems_rtl_obj_sections_linked_to_order (rtems_rtl_obj_t* obj,
    673                                         int              section,
    674                                         uint32_t         visited_mask)
     672rtems_rtl_obj_sections_linked_to_order (rtems_rtl_obj* obj,
     673                                        int            section,
     674                                        uint32_t       visited_mask)
    675675{
    676676  rtems_chain_control* sections = &obj->sections;
     
    682682  while (!rtems_chain_is_tail (sections, node))
    683683  {
    684     rtems_rtl_obj_sect_t* sect = (rtems_rtl_obj_sect_t*) node;
     684    rtems_rtl_obj_sect* sect = (rtems_rtl_obj_sect*) node;
    685685    if (sect->section == section)
    686686    {
     
    705705      while (!rtems_chain_is_tail (sections, node))
    706706      {
    707         sect = (rtems_rtl_obj_sect_t*) node;
     707        sect = (rtems_rtl_obj_sect*) node;
    708708        if ((sect->flags & mask) == mask)
    709709        {
     
    722722
    723723static void
    724 rtems_rtl_obj_sections_link_order (uint32_t mask, rtems_rtl_obj_t* obj)
     724rtems_rtl_obj_sections_link_order (uint32_t mask, rtems_rtl_obj* obj)
    725725{
    726726  rtems_chain_control* sections = &obj->sections;
     
    729729  while (!rtems_chain_is_tail (sections, node))
    730730  {
    731     rtems_rtl_obj_sect_t* sect = (rtems_rtl_obj_sect_t*) node;
     731    rtems_rtl_obj_sect* sect = (rtems_rtl_obj_sect*) node;
    732732    if ((sect->flags & mask) == mask)
    733733    {
     
    751751
    752752static size_t
    753 rtems_rtl_obj_sections_loader (uint32_t                     mask,
    754                                rtems_rtl_obj_t*             obj,
    755                                int                          fd,
    756                                uint8_t*                     base,
    757                                rtems_rtl_obj_sect_handler_t handler,
    758                                void*                        data)
     753rtems_rtl_obj_sections_loader (uint32_t                   mask,
     754                               rtems_rtl_obj*             obj,
     755                               int                        fd,
     756                               uint8_t*                   base,
     757                               rtems_rtl_obj_sect_handler handler,
     758                               void*                      data)
    759759{
    760760  rtems_chain_control* sections = &obj->sections;
     
    766766  while (!rtems_chain_is_tail (sections, node))
    767767  {
    768     rtems_rtl_obj_sect_t* sect = (rtems_rtl_obj_sect_t*) node;
     768    rtems_rtl_obj_sect* sect = (rtems_rtl_obj_sect*) node;
    769769
    770770    if ((sect->size != 0) && ((sect->flags & mask) != 0))
     
    820820
    821821bool
    822 rtems_rtl_obj_load_sections (rtems_rtl_obj_t*             obj,
    823                              int                          fd,
    824                              rtems_rtl_obj_sect_handler_t handler,
    825                              void*                        data)
     822rtems_rtl_obj_load_sections (rtems_rtl_obj*             obj,
     823                             int                        fd,
     824                             rtems_rtl_obj_sect_handler handler,
     825                             void*                      data)
    826826{
    827827  size_t text_size;
     
    908908
    909909static void
    910 rtems_rtl_obj_run_cdtors (rtems_rtl_obj_t* obj, uint32_t mask)
     910rtems_rtl_obj_run_cdtors (rtems_rtl_obj* obj, uint32_t mask)
    911911{
    912912  rtems_chain_node* node = rtems_chain_first (&obj->sections);
    913913  while (!rtems_chain_is_tail (&obj->sections, node))
    914914  {
    915     rtems_rtl_obj_sect_t* sect = (rtems_rtl_obj_sect_t*) node;
     915    rtems_rtl_obj_sect* sect = (rtems_rtl_obj_sect*) node;
    916916    if ((sect->flags & mask) == mask)
    917917    {
    918       rtems_rtl_cdtor_t* handler;
    919       size_t             handlers = sect->size / sizeof (rtems_rtl_cdtor_t);
    920       int                c;
     918      rtems_rtl_cdtor* handler;
     919      size_t           handlers = sect->size / sizeof (rtems_rtl_cdtor);
     920      int              c;
    921921      for (c = 0, handler = sect->base; c < handlers; ++c)
    922922        if (*handler)
     
    928928
    929929void
    930 rtems_rtl_obj_run_ctors (rtems_rtl_obj_t* obj)
     930rtems_rtl_obj_run_ctors (rtems_rtl_obj* obj)
    931931{
    932932  return rtems_rtl_obj_run_cdtors (obj, RTEMS_RTL_OBJ_SECT_CTOR);
     
    934934
    935935void
    936 rtems_rtl_obj_run_dtors (rtems_rtl_obj_t* obj)
     936rtems_rtl_obj_run_dtors (rtems_rtl_obj* obj)
    937937{
    938938  return rtems_rtl_obj_run_cdtors (obj, RTEMS_RTL_OBJ_SECT_DTOR);
     
    944944 */
    945945static bool
    946 rtems_rtl_obj_archive_find (rtems_rtl_obj_t* obj, int fd)
     946rtems_rtl_obj_archive_find (rtems_rtl_obj* obj, int fd)
    947947{
    948948#define RTEMS_RTL_AR_IDENT      "!<arch>\n"
     
    11681168
    11691169static bool
    1170 rtems_rtl_obj_file_load (rtems_rtl_obj_t* obj, int fd)
     1170rtems_rtl_obj_file_load (rtems_rtl_obj* obj, int fd)
    11711171{
    11721172  int l;
    11731173
    1174   for (l = 0; l < (sizeof (loaders) / sizeof (rtems_rtl_loader_table_t)); ++l)
     1174  for (l = 0; l < (sizeof (loaders) / sizeof (rtems_rtl_loader_table)); ++l)
    11751175  {
    11761176    if (loaders[l].check (obj, fd))
     
    11861186
    11871187static bool
    1188 rtems_rtl_obj_file_unload (rtems_rtl_obj_t* obj)
     1188rtems_rtl_obj_file_unload (rtems_rtl_obj* obj)
    11891189{
    11901190  if (obj->format >= 0 && obj->format < RTEMS_RTL_LOADERS)
     
    11941194
    11951195bool
    1196 rtems_rtl_obj_load (rtems_rtl_obj_t* obj)
     1196rtems_rtl_obj_load (rtems_rtl_obj* obj)
    11971197{
    11981198  int fd;
     
    12451245
    12461246bool
    1247 rtems_rtl_obj_unload (rtems_rtl_obj_t* obj)
     1247rtems_rtl_obj_unload (rtems_rtl_obj* obj)
    12481248{
    12491249  _rtld_linkmap_delete(obj);
  • cpukit/libdl/rtl-rap.c

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012-2013 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012-2013, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    4646 * The ELF format signature.
    4747 */
    48 static rtems_rtl_loader_format_t rap_sig =
     48static rtems_rtl_loader_format rap_sig =
    4949{
    5050  .label = "RAP",
     
    5555 * The section definitions found in a RAP file.
    5656 */
    57 typedef struct rtems_rtl_rap_sectdef_s
     57typedef struct rtems_rtl_rap_sectdef
    5858{
    5959  const char*    name;    /**< Name of the section. */
    6060  const uint32_t flags;   /**< Section flags. */
    61 } rtems_rtl_rap_sectdef_t;
     61} rtems_rtl_rap_sectdef;
    6262
    6363/**
     
    7575 * The sections as loaded from a RAP file.
    7676 */
    77 static const rtems_rtl_rap_sectdef_t rap_sections[RTEMS_RTL_RAP_SECS] =
     77static const rtems_rtl_rap_sectdef rap_sections[RTEMS_RTL_RAP_SECS] =
    7878{
    7979  { ".text",  RTEMS_RTL_OBJ_SECT_TEXT  | RTEMS_RTL_OBJ_SECT_LOAD },
     
    8888 * The section definitions found in a RAP file.
    8989 */
    90 typedef struct rtems_rtl_rap_section_s
     90typedef struct rtems_rtl_rap_section
    9191{
    9292  uint32_t size;       /**< The size of the section. */
    9393  uint32_t alignment;  /**< The alignment of the section. */
    94 } rtems_rtl_rap_section_t;
     94} rtems_rtl_rap_section;
    9595
    9696/**
    9797 * The RAP loader.
    9898 */
    99 typedef struct rtems_rtl_rap_s
    100 {
    101   rtems_rtl_obj_cache_t*  file;         /**< The file cache for the RAP file. */
    102   rtems_rtl_obj_comp_t*   decomp;       /**< The decompression streamer. */
    103   uint32_t                length;       /**< The file length. */
    104   uint32_t                version;      /**< The RAP file version. */
    105   uint32_t                compression;  /**< The type of compression. */
    106   uint32_t                checksum;     /**< The checksum. */
    107   uint32_t                machinetype;  /**< The ELF machine type. */
    108   uint32_t                datatype;     /**< The ELF data type. */
    109   uint32_t                class;        /**< The ELF class. */
    110   uint32_t                init;         /**< The initialisation strtab offset. */
    111   uint32_t                fini;         /**< The finish strtab offset. */
    112   rtems_rtl_rap_section_t secs[RTEMS_RTL_RAP_SECS]; /**< The sections. */
    113   uint32_t                symtab_size;  /**< The symbol table size. */
    114   char*                   strtab;       /**< The string table. */
    115   uint32_t                strtab_size;  /**< The string table size. */
    116   uint32_t                relocs_size;  /**< The relocation table size. */
    117   uint32_t                symbols;      /**< The number of symbols. */
    118   uint32_t                strtable_size;/**< The size of section names and obj names. */
    119   uint32_t                rpathlen;     /**< The length of rpath. */
    120   char*                   strtable;     /**< The detail string which resides in obj detail. */
    121 } rtems_rtl_rap_t;
     99typedef struct rtems_rtl_rap
     100{
     101  rtems_rtl_obj_cache*  file;         /**< The file cache for the RAP file. */
     102  rtems_rtl_obj_comp*   decomp;       /**< The decompression streamer. */
     103  uint32_t              length;       /**< The file length. */
     104  uint32_t              version;      /**< The RAP file version. */
     105  uint32_t              compression;  /**< The type of compression. */
     106  uint32_t              checksum;     /**< The checksum. */
     107  uint32_t              machinetype;  /**< The ELF machine type. */
     108  uint32_t              datatype;     /**< The ELF data type. */
     109  uint32_t              class;        /**< The ELF class. */
     110  uint32_t              init;         /**< The initialisation strtab offset. */
     111  uint32_t              fini;         /**< The finish strtab offset. */
     112  rtems_rtl_rap_section secs[RTEMS_RTL_RAP_SECS]; /**< The sections. */
     113  uint32_t              symtab_size;  /**< The symbol table size. */
     114  char*                 strtab;       /**< The string table. */
     115  uint32_t              strtab_size;  /**< The string table size. */
     116  uint32_t              relocs_size;  /**< The relocation table size. */
     117  uint32_t              symbols;      /**< The number of symbols. */
     118  uint32_t              strtable_size;/**< The size of section names and obj names. */
     119  uint32_t              rpathlen;     /**< The length of rpath. */
     120  char*                 strtable;     /**< The detail string which resides in obj detail. */
     121} rtems_rtl_rap;
    122122
    123123/**
     
    192192
    193193static bool
    194 rtems_rtl_rap_read_uint32 (rtems_rtl_obj_comp_t* comp, uint32_t* value)
     194rtems_rtl_rap_read_uint32 (rtems_rtl_obj_comp* comp, uint32_t* value)
    195195{
    196196  uint8_t buffer[sizeof (uint32_t)];
     
    205205
    206206static bool
    207 rtems_rtl_rap_loader (rtems_rtl_obj_t*      obj,
    208                       int                   fd,
    209                       rtems_rtl_obj_sect_t* sect,
    210                       void*                 data)
    211 {
    212   rtems_rtl_rap_t* rap = (rtems_rtl_rap_t*) data;
     207rtems_rtl_rap_loader (rtems_rtl_obj*      obj,
     208                      int                 fd,
     209                      rtems_rtl_obj_sect* sect,
     210                      void*               data)
     211{
     212  rtems_rtl_rap* rap = (rtems_rtl_rap*) data;
    213213
    214214  if (rtems_rtl_trace (RTEMS_RTL_TRACE_LOAD))
     
    220220
    221221static bool
    222 rtems_rtl_rap_relocate (rtems_rtl_rap_t* rap, rtems_rtl_obj_t* obj)
     222rtems_rtl_rap_relocate (rtems_rtl_rap* rap, rtems_rtl_obj* obj)
    223223{
    224224  #define SYMNAME_BUFFER_SIZE (1024)
     
    238238  for (section = 0; section < RTEMS_RTL_RAP_SECS; ++section)
    239239  {
    240     rtems_rtl_obj_sect_t* targetsect;
    241     uint32_t               header = 0;
    242     int                    relocs;
    243     bool                   is_rela;
    244     int                    r;
     240    rtems_rtl_obj_sect* targetsect;
     241    uint32_t            header = 0;
     242    int                 relocs;
     243    bool                is_rela;
     244    int                 r;
    245245
    246246    targetsect = rtems_rtl_obj_find_section (obj, rap_sections[section].name);
     
    321321      if ((info & (1 << 31)) == 0)
    322322      {
    323         rtems_rtl_obj_sect_t* symsect;
     323        rtems_rtl_obj_sect* symsect;
    324324
    325325        symsect = rtems_rtl_obj_find_section_by_index (obj, info >> 8);
     
    334334      else if (rtems_rtl_elf_rel_resolve_sym (type))
    335335      {
    336         rtems_rtl_obj_sym_t* symbol;
     336        rtems_rtl_obj_sym* symbol;
    337337
    338338        symname_size = (info & ~(3 << 30)) >> 8;
     
    433433 */
    434434static bool
    435 rtems_rtl_rap_load_linkmap (rtems_rtl_rap_t* rap, rtems_rtl_obj_t* obj)
     435rtems_rtl_rap_load_linkmap (rtems_rtl_rap* rap, rtems_rtl_obj* obj)
    436436{
    437437  void*            detail;
     
    566566
    567567static bool
    568 rtems_rtl_rap_load_symbols (rtems_rtl_rap_t* rap, rtems_rtl_obj_t* obj)
    569 {
    570   rtems_rtl_obj_sym_t* gsym;
    571   int                  sym;
     568rtems_rtl_rap_load_symbols (rtems_rtl_rap* rap, rtems_rtl_obj* obj)
     569{
     570  rtems_rtl_obj_sym* gsym;
     571  int                sym;
    572572
    573573  obj->global_size =
    574     rap->symbols * sizeof (rtems_rtl_obj_sym_t) + rap->strtab_size;
     574    rap->symbols * sizeof (rtems_rtl_obj_sym) + rap->strtab_size;
    575575
    576576  obj->global_table = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_SYMBOL,
     
    586586
    587587  rap->strtab = (((char*) obj->global_table) +
    588                  (rap->symbols * sizeof (rtems_rtl_obj_sym_t)));
     588                 (rap->symbols * sizeof (rtems_rtl_obj_sym)));
    589589
    590590  if (!rtems_rtl_obj_comp_read (rap->decomp, rap->strtab, rap->strtab_size))
     
    596596  for (sym = 0, gsym = obj->global_table; sym < rap->symbols; ++sym)
    597597  {
    598     rtems_rtl_obj_sect_t* symsect;
    599     uint32_t              data;
    600     uint32_t              name;
    601     uint32_t              value;
     598    rtems_rtl_obj_sect* symsect;
     599    uint32_t            data;
     600    uint32_t            name;
     601    uint32_t            value;
    602602
    603603    if (!rtems_rtl_rap_read_uint32 (rap->decomp, &data) ||
     
    757757
    758758bool
    759 rtems_rtl_rap_file_check (rtems_rtl_obj_t* obj, int fd)
    760 {
    761   rtems_rtl_obj_cache_t* header;
    762   uint8_t*               rhdr = NULL;
    763   size_t                 rlen = 64;
    764   uint32_t               length = 0;
    765   uint32_t               version = 0;
    766   uint32_t               compression = 0;
    767   uint32_t               checksum = 0;
     759rtems_rtl_rap_file_check (rtems_rtl_obj* obj, int fd)
     760{
     761  rtems_rtl_obj_cache* header;
     762  uint8_t*             rhdr = NULL;
     763  size_t               rlen = 64;
     764  uint32_t             length = 0;
     765  uint32_t             version = 0;
     766  uint32_t             compression = 0;
     767  uint32_t             checksum = 0;
    768768
    769769  rtems_rtl_obj_caches (&header, NULL, NULL);
     
    785785
    786786bool
    787 rtems_rtl_rap_file_load (rtems_rtl_obj_t* obj, int fd)
    788 {
    789   rtems_rtl_rap_t rap = { 0 };
    790   uint8_t*        rhdr = NULL;
    791   size_t          rlen = 64;
    792   int             section;
     787rtems_rtl_rap_file_load (rtems_rtl_obj* obj, int fd)
     788{
     789  rtems_rtl_rap rap = { 0 };
     790  uint8_t*      rhdr = NULL;
     791  size_t        rlen = 64;
     792  int           section;
    793793
    794794  rtems_rtl_obj_caches (&rap.file, NULL, NULL);
     
    812812   * Set up the decompressor.
    813813   */
    814   rtems_rtl_obj_comp (&rap.decomp, rap.file, fd, rap.compression,
    815                       rlen + obj->ooffset);
     814  rtems_rtl_obj_decompress (&rap.decomp, rap.file, fd, rap.compression,
     815                            rlen + obj->ooffset);
    816816
    817817  /*
     
    991991
    992992bool
    993 rtems_rtl_rap_file_unload (rtems_rtl_obj_t* obj)
     993rtems_rtl_rap_file_unload (rtems_rtl_obj* obj)
    994994{
    995995  (void) obj;
     
    997997}
    998998
    999 rtems_rtl_loader_format_t*
     999rtems_rtl_loader_format*
    10001000rtems_rtl_rap_file_sig (void)
    10011001{
  • cpukit/libdl/rtl-rap.h

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    3131 * @param fd The file descriptor.
    3232 */
    33 bool rtems_rtl_rap_file_check (rtems_rtl_obj_t* obj, int fd);
     33bool rtems_rtl_rap_file_check (rtems_rtl_obj* obj, int fd);
    3434
    3535/**
     
    3939 * @param fd The file descriptor.
    4040 */
    41 bool rtems_rtl_rap_file_load (rtems_rtl_obj_t* obj, int fd);
     41bool rtems_rtl_rap_file_load (rtems_rtl_obj* obj, int fd);
    4242
    4343/**
     
    4646 * @param obj The object to unload.
    4747 */
    48 bool rtems_rtl_rap_file_unload (rtems_rtl_obj_t* obj);
     48bool rtems_rtl_rap_file_unload (rtems_rtl_obj* obj);
    4949
    5050/**
    5151 * The RAP format signature handler.
    5252 *
    53  * @return rtems_rtl_loader_format_t* The format's signature.
     53 * @return rtems_rtl_loader_format* The format's signature.
    5454 */
    55 rtems_rtl_loader_format_t* rtems_rtl_rap_file_sig (void);
     55rtems_rtl_loader_format* rtems_rtl_rap_file_sig (void);
    5656
    5757#ifdef __cplusplus
  • cpukit/libdl/rtl-shell.c

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    3434 * The type of the shell handlers we have.
    3535 */
    36 typedef int (*rtems_rtl_shell_handler_t) (rtems_rtl_data_t* rtl, int argc, char *argv[]);
     36typedef int (*rtems_rtl_shell_handler) (rtems_rtl_data* rtl, int argc, char *argv[]);
    3737
    3838/**
     
    4141typedef struct
    4242{
    43   const char*               name;    /**< The sub-command's name. */
    44   rtems_rtl_shell_handler_t handler; /**< The sub-command's handler. */
    45   const char*               help;    /**< The sub-command's help. */
    46 } rtems_rtl_shell_cmd_t;
     43  const char*             name;    /**< The sub-command's name. */
     44  rtems_rtl_shell_handler handler; /**< The sub-command's handler. */
     45  const char*             help;    /**< The sub-command's help. */
     46} rtems_rtl_shell_cmd;
    4747
    4848/**
     
    5454  size_t exec;    /**< The amount of executable memory allocated. */
    5555  size_t symbols; /**< The amount of symbol memory allocated. */
    56 } rtems_rtl_obj_summary_t;
     56} rtems_rtl_obj_summary;
    5757
    5858/**
     
    6262rtems_rtl_obj_summary_iterator (rtems_chain_node* node, void* data)
    6363{
    64   rtems_rtl_obj_summary_t* summary = data;
    65   rtems_rtl_obj_t*         obj = (rtems_rtl_obj_t*) node;
     64  rtems_rtl_obj_summary* summary = data;
     65  rtems_rtl_obj*         obj = (rtems_rtl_obj*) node;
    6666  ++summary->count;
    6767  summary->exec += obj->exec_size;
     
    7474 */
    7575static int
    76 rtems_rtl_count_symbols (rtems_rtl_data_t* rtl)
     76rtems_rtl_count_symbols (rtems_rtl_data* rtl)
    7777{
    7878  int count;
     
    8484
    8585static int
    86 rtems_rtl_shell_status (rtems_rtl_data_t* rtl, int argc, char *argv[])
    87 {
    88   rtems_rtl_obj_summary_t summary;
    89   size_t                  total_memory;
     86rtems_rtl_shell_status (rtems_rtl_data* rtl, int argc, char *argv[])
     87{
     88  rtems_rtl_obj_summary summary;
     89  size_t                total_memory;
    9090
    9191  summary.count   = 0;
     
    9999   */
    100100  total_memory =
    101     sizeof (*rtl) + (summary.count * sizeof (rtems_rtl_obj_t)) +
     101    sizeof (*rtl) + (summary.count * sizeof (rtems_rtl_obj)) +
    102102    summary.exec + summary.symbols;
    103103
     
    118118typedef struct
    119119{
    120   rtems_rtl_data_t* rtl; /**< The RTL data. */
    121   int  indent;           /**< Spaces to indent. */
    122   bool oname;            /**< Print object names. */
    123   bool names;            /**< Print details of all names. */
    124   bool memory_map;      /**< Print the memory map. */
    125   bool symbols;          /**< Print the global symbols. */
    126   bool base;             /**< Include the base object file. */
    127 } rtems_rtl_obj_print_t;
     120  rtems_rtl_data* rtl;        /**< The RTL data. */
     121  int             indent;     /**< Spaces to indent. */
     122  bool            oname;      /**< Print object names. */
     123  bool            names;      /**< Print details of all names. */
     124  bool            memory_map; /**< Print the memory map. */
     125  bool            symbols;    /**< Print the global symbols. */
     126  bool            base;       /**< Include the base object file. */
     127} rtems_rtl_obj_print;
    128128
    129129/**
     
    173173 */
    174174static bool
    175 rtems_rtl_obj_printer (rtems_rtl_obj_print_t* print, rtems_rtl_obj_t* obj)
     175rtems_rtl_obj_printer (rtems_rtl_obj_print* print, rtems_rtl_obj* obj)
    176176{
    177177  char flags_str[33];
     
    240240 */
    241241static bool
    242 rtems_rtl_unresolved_printer (rtems_rtl_unresolv_rec_t* rec,
    243                               void*                     data)
    244 {
    245   rtems_rtl_obj_print_t* print = (rtems_rtl_obj_print_t*) data;
     242rtems_rtl_unresolved_printer (rtems_rtl_unresolv_rec* rec,
     243                              void*                   data)
     244{
     245  rtems_rtl_obj_print* print = (rtems_rtl_obj_print*) data;
    246246  if (rec->type == rtems_rtl_unresolved_name)
    247247    printf ("%-*c%s\n", print->indent + 2, ' ', rec->rec.name.name);
     
    255255rtems_rtl_obj_print_iterator (rtems_chain_node* node, void* data)
    256256{
    257   rtems_rtl_obj_print_t* print = data;
    258   rtems_rtl_obj_t*       obj = (rtems_rtl_obj_t*) node;
     257  rtems_rtl_obj_print* print = data;
     258  rtems_rtl_obj*       obj = (rtems_rtl_obj*) node;
    259259  return rtems_rtl_obj_printer (print, obj);
    260260}
    261261
    262262static int
    263 rtems_rtl_shell_list (rtems_rtl_data_t* rtl, int argc, char *argv[])
    264 {
    265   rtems_rtl_obj_print_t print;
     263rtems_rtl_shell_list (rtems_rtl_data* rtl, int argc, char *argv[])
     264{
     265  rtems_rtl_obj_print print;
    266266  print.rtl = rtl;
    267267  print.indent = 1;
     
    278278
    279279static int
    280 rtems_rtl_shell_sym (rtems_rtl_data_t* rtl, int argc, char *argv[])
    281 {
    282   rtems_rtl_obj_print_t print;
     280rtems_rtl_shell_sym (rtems_rtl_data* rtl, int argc, char *argv[])
     281{
     282  rtems_rtl_obj_print print;
    283283  print.rtl = rtl;
    284284  print.indent = 1;
     
    297297
    298298static int
    299 rtems_rtl_shell_object (rtems_rtl_data_t* rtl, int argc, char *argv[])
     299rtems_rtl_shell_object (rtems_rtl_data* rtl, int argc, char *argv[])
    300300{
    301301  return 0;
     
    316316rtems_rtl_shell_command (int argc, char* argv[])
    317317{
    318   const rtems_rtl_shell_cmd_t table[] =
     318  const rtems_rtl_shell_cmd table[] =
    319319  {
    320320    { "status", rtems_rtl_shell_status,
     
    344344        printf ("%s: commands are:\n", argv[0]);
    345345        for (t = 0;
    346              t < (sizeof (table) / sizeof (const rtems_rtl_shell_cmd_t));
     346             t < (sizeof (table) / sizeof (const rtems_rtl_shell_cmd));
    347347             ++t)
    348348          printf ("  %s\t%s\n", table[t].name, table[t].help);
     
    359359  {
    360360    for (t = 0;
    361          t < (sizeof (table) / sizeof (const rtems_rtl_shell_cmd_t));
     361         t < (sizeof (table) / sizeof (const rtems_rtl_shell_cmd));
    362362         ++t)
    363363    {
    364364      if (strncmp (argv[arg], table[t].name, strlen (argv[arg])) == 0)
    365365      {
    366         rtems_rtl_data_t* rtl = rtems_rtl_data ();
    367         int               r;
     366        rtems_rtl_data* rtl = rtems_rtl_lock ();
     367        int             r;
    368368        if (!rtl)
    369369        {
  • cpukit/libdl/rtl-sym.c

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012-2014 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012-2014, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    3333 * symbol table from an object file.
    3434 */
    35 static rtems_rtl_obj_sym_t global_sym_add =
     35static rtems_rtl_obj_sym global_sym_add =
    3636{
    3737  .name  = "rtems_rtl_base_sym_global_add",
     
    5050
    5151static void
    52 rtems_rtl_symbol_global_insert (rtems_rtl_symbols_t* symbols,
    53                                 rtems_rtl_obj_sym_t* symbol)
     52rtems_rtl_symbol_global_insert (rtems_rtl_symbols* symbols,
     53                                rtems_rtl_obj_sym* symbol)
    5454{
    5555  uint_fast32_t hash = rtems_rtl_symbol_hash (symbol->name);
     
    5959
    6060bool
    61 rtems_rtl_symbol_table_open (rtems_rtl_symbols_t* symbols,
    62                              size_t               buckets)
     61rtems_rtl_symbol_table_open (rtems_rtl_symbols* symbols,
     62                             size_t             buckets)
    6363{
    6464  symbols->buckets = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_SYMBOL,
     
    7878
    7979void
    80 rtems_rtl_symbol_table_close (rtems_rtl_symbols_t* symbols)
     80rtems_rtl_symbol_table_close (rtems_rtl_symbols* symbols)
    8181{
    8282  rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_SYMBOL, symbols->buckets);
     
    8484
    8585bool
    86 rtems_rtl_symbol_global_add (rtems_rtl_obj_t*     obj,
     86rtems_rtl_symbol_global_add (rtems_rtl_obj     obj,
    8787                             const unsigned char* esyms,
    8888                             unsigned int         size)
    8989{
    90   rtems_rtl_symbols_t* symbols;
    91   rtems_rtl_obj_sym_t* sym;
    92   size_t               count;
    93   size_t               s;
    94   uint32_t             marker;
     90  rtems_rtl_symbols* symbols;
     91  rtems_rtl_obj_sym* sym;
     92  size_t             count;
     93  size_t             s;
     94  uint32_t           marker;
    9595
    9696  count = 0;
     
    128128    printf ("rtl: global symbol add: %zi\n", count);
    129129
    130   obj->global_size = count * sizeof (rtems_rtl_obj_sym_t);
     130  obj->global_size = count * sizeof (rtems_rtl_obj_sym);
    131131  obj->global_table = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_SYMBOL,
    132132                                           obj->global_size, true);
     
    173173}
    174174
    175 rtems_rtl_obj_sym_t*
     175rtems_rtl_obj_sym*
    176176rtems_rtl_symbol_global_find (const char* name)
    177177{
    178   rtems_rtl_symbols_t* symbols;
     178  rtems_rtl_symbols symbols;
    179179  uint_fast32_t        hash;
    180180  rtems_chain_control* bucket;
     
    189189  while (!rtems_chain_is_tail (bucket, node))
    190190  {
    191     rtems_rtl_obj_sym_t* sym = (rtems_rtl_obj_sym_t*) node;
     191    rtems_rtl_obj_sym* sym = (rtems_rtl_obj_sym*) node;
    192192    /*
    193193     * Use the hash. I could add this to the symbol but it uses more memory.
     
    201201}
    202202
    203 rtems_rtl_obj_sym_t*
    204 rtems_rtl_symbol_obj_find (rtems_rtl_obj_t* obj, const char* name)
    205 {
    206   rtems_rtl_obj_sym_t* sym;
    207   size_t               s;
     203rtems_rtl_obj_sym*
     204rtems_rtl_symbol_obj_find (rtems_rtl_obj* obj, const char* name)
     205{
     206  rtems_rtl_obj_sym* sym;
     207  size_t             s;
    208208  /*
    209209   * Check the object file's symbols first. If not found search the
     
    226226
    227227void
    228 rtems_rtl_symbol_obj_add (rtems_rtl_obj_t* obj)
    229 {
    230   rtems_rtl_symbols_t* symbols;
    231   rtems_rtl_obj_sym_t* sym;
    232   size_t               s;
     228rtems_rtl_symbol_obj_add (rtems_rtl_obj* obj)
     229{
     230  rtems_rtl_symbols* symbols;
     231  rtems_rtl_obj_sym* sym;
     232  size_t             s;
    233233
    234234  symbols = rtems_rtl_global_symbols ();
     
    239239
    240240void
    241 rtems_rtl_symbol_obj_erase_local (rtems_rtl_obj_t* obj)
     241rtems_rtl_symbol_obj_erase_local (rtems_rtl_obj* obj)
    242242{
    243243  if (obj->local_table)
     
    251251
    252252void
    253 rtems_rtl_symbol_obj_erase (rtems_rtl_obj_t* obj)
     253rtems_rtl_symbol_obj_erase (rtems_rtl_obj* obj)
    254254{
    255255  rtems_rtl_symbol_obj_erase_local (obj);
    256256  if (obj->global_table)
    257257  {
    258     rtems_rtl_obj_sym_t* sym;
    259     size_t               s;
     258    rtems_rtl_obj_sym* sym;
     259    size_t             s;
    260260    for (s = 0, sym = obj->global_table; s < obj->global_syms; ++s, ++sym)
    261261        if (!rtems_chain_is_node_off_chain (&sym->node))
  • cpukit/libdl/rtl-unresolved.c

    r86e79d7 rf59d435d  
    11/*
    2  *  COPYRIGHT (c) 2012 Chris Johns <chrisj@rtems.org>
     2 *  COPYRIGHT (c) 2012, 2018 Chris Johns <chrisj@rtems.org>
    33 *
    44 *  The license and distribution terms for this file may be
     
    2929#include <rtems/rtl/rtl-trace.h>
    3030
    31 static rtems_rtl_unresolv_block_t*
    32 rtems_rtl_unresolved_block_alloc (rtems_rtl_unresolved_t* unresolved)
     31static rtems_rtl_unresolv_block*
     32rtems_rtl_unresolved_block_alloc (rtems_rtl_unresolved* unresolved)
    3333{
    3434  /*
     
    3636   */
    3737  size_t size =
    38     (sizeof(rtems_rtl_unresolv_block_t) +
    39      (sizeof(rtems_rtl_unresolv_rec_t) * (unresolved->block_recs - 1)));
    40   rtems_rtl_unresolv_block_t* block =
     38    (sizeof(rtems_rtl_unresolv_block) +
     39     (sizeof(rtems_rtl_unresolv_rec) * (unresolved->block_recs - 1)));
     40  rtems_rtl_unresolv_block* block =
    4141    rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_EXTERNAL, size, true);
    4242  if (block)
     
    5151{
    5252  size_t length = strlen (name);
    53   return ((length + sizeof(rtems_rtl_unresolv_name_t) - 1) /
    54           sizeof(rtems_rtl_unresolv_name_t));
     53  return ((length + sizeof(rtems_rtl_unresolv_name) - 1) /
     54          sizeof(rtems_rtl_unresolv_name));
    5555}
    5656
    5757static int
    58 rtems_rtl_unresolved_rec_index (rtems_rtl_unresolv_block_t* block,
    59                                 rtems_rtl_unresolv_rec_t* rec)
    60 {
    61   return (rec - &block->rec) / sizeof (rtems_rtl_unresolv_rec_t);
    62 }
    63 
    64 static rtems_rtl_unresolv_rec_t*
    65 rtems_rtl_unresolved_rec_first (rtems_rtl_unresolv_block_t* block)
     58rtems_rtl_unresolved_rec_index (rtems_rtl_unresolv_block* block,
     59                                rtems_rtl_unresolv_rec* rec)
     60{
     61  return (rec - &block->rec) / sizeof (rtems_rtl_unresolv_rec);
     62}
     63
     64static rtems_rtl_unresolv_rec*
     65rtems_rtl_unresolved_rec_first (rtems_rtl_unresolv_block* block)
    6666{
    6767  return &block->rec;
    6868}
    6969
    70 static rtems_rtl_unresolv_rec_t*
    71 rtems_rtl_unresolved_rec_next (rtems_rtl_unresolv_rec_t* rec)
     70static rtems_rtl_unresolv_rec*
     71rtems_rtl_unresolved_rec_next (rtems_rtl_unresolv_rec* rec)
    7272{
    7373
     
    8585       * Determine how many records the name occupies. Round up.
    8686       */
    87       rec += ((rec->rec.name.length + sizeof(rtems_rtl_unresolv_name_t) - 1) /
    88               sizeof(rtems_rtl_unresolv_name_t));
     87      rec += ((rec->rec.name.length + sizeof(rtems_rtl_unresolv_name) - 1) /
     88              sizeof(rtems_rtl_unresolv_name));
    8989      break;
    9090
     
    101101
    102102static bool
    103 rtems_rtl_unresolved_rec_is_last (rtems_rtl_unresolv_block_t* block,
    104                                   rtems_rtl_unresolv_rec_t*   rec)
     103rtems_rtl_unresolved_rec_is_last (rtems_rtl_unresolv_block* block,
     104                                  rtems_rtl_unresolv_rec*   rec)
    105105{
    106106  int index = (rec - &block->rec) / sizeof (rec);
     
    108108}
    109109
    110 static rtems_rtl_unresolv_rec_t*
    111 rtems_rtl_unresolved_rec_first_free (rtems_rtl_unresolv_block_t* block)
     110static rtems_rtl_unresolv_rec*
     111rtems_rtl_unresolved_rec_first_free (rtems_rtl_unresolv_block* block)
    112112{
    113113  return &block->rec + block->recs;
     
    115115
    116116static int
    117 rtems_rtl_unresolved_find_name (rtems_rtl_unresolved_t* unresolved,
    118                                 const char*             name,
    119                                 bool                    update_refcount)
     117rtems_rtl_unresolved_find_name (rtems_rtl_unresolved* unresolved,
     118                                const char*           name,
     119                                bool                  update_refcount)
    120120{
    121121  size_t length = strlen (name);
     
    125125  while (!rtems_chain_is_tail (&unresolved->blocks, node))
    126126  {
    127     rtems_rtl_unresolv_block_t* block = (rtems_rtl_unresolv_block_t*) node;
    128     rtems_rtl_unresolv_rec_t* rec = rtems_rtl_unresolved_rec_first (block);
     127    rtems_rtl_unresolv_block* block = (rtems_rtl_unresolv_block*) node;
     128    rtems_rtl_unresolv_rec* rec = rtems_rtl_unresolved_rec_first (block);
    129129
    130130    while (!rtems_rtl_unresolved_rec_is_last (block, rec))
     
    153153 * Struct to pass relocation data in the interator.
    154154 */
    155 typedef struct rtems_rtl_unresolved_reloc_data_s
     155typedef struct rtems_rtl_unresolved_reloc_data
    156156{
    157157  uint16_t                  name;     /**< Name index. */
    158   rtems_rtl_unresolv_rec_t* name_rec; /**< Name record. */
    159   rtems_rtl_obj_sym_t*      sym;      /**< The symbol record. */
    160 } rtems_rtl_unresolved_reloc_data_t;
     158  rtems_rtl_unresolv_rec* name_rec; /**< Name record. */
     159  rtems_rtl_obj_sym*      sym;      /**< The symbol record. */
     160} rtems_rtl_unresolved_reloc_data;
    161161
    162162static bool
    163 rtems_rtl_unresolved_resolve_reloc (rtems_rtl_unresolv_rec_t* rec,
    164                                     void*                     data)
     163rtems_rtl_unresolved_resolve_reloc (rtems_rtl_unresolv_rec* rec,
     164                                    void*                   data)
    165165{
    166166  if (rec->type == rtems_rtl_unresolved_reloc)
    167167  {
    168     rtems_rtl_unresolved_reloc_data_t* rd;
    169     rd = (rtems_rtl_unresolved_reloc_data_t*) data;
     168    rtems_rtl_unresolved_reloc_data* rd;
     169    rd = (rtems_rtl_unresolved_reloc_data*) data;
    170170
    171171    if (rec->rec.reloc.name == rd->name)
     
    191191
    192192static bool
    193 rtems_rtl_unresolved_resolve_iterator (rtems_rtl_unresolv_rec_t* rec,
    194                                        void*                     data)
     193rtems_rtl_unresolved_resolve_iterator (rtems_rtl_unresolv_rec* rec,
     194                                       void*                   data)
    195195{
    196196  if (rec->type == rtems_rtl_unresolved_name)
    197197  {
    198     rtems_rtl_unresolved_reloc_data_t* rd;
    199     rd = (rtems_rtl_unresolved_reloc_data_t*) data;
     198    rtems_rtl_unresolved_reloc_data* rd;
     199    rd = (rtems_rtl_unresolved_reloc_data*) data;
    200200
    201201    ++rd->name;
     
    224224
    225225static void
    226 rtems_rtl_unresolved_clean_block (rtems_rtl_unresolv_block_t* block,
    227                                   rtems_rtl_unresolv_rec_t* rec,
    228                                   size_t count,
    229                                   size_t recs_per_block)
     226rtems_rtl_unresolved_clean_block (rtems_rtl_unresolv_block* block,
     227                                  rtems_rtl_unresolv_rec rec,
     228                                  size_t                    count,
     229                                  size_t                    recs_per_block)
    230230{
    231231  size_t index = rtems_rtl_unresolved_rec_index (block, rec);
    232232  size_t bytes =
    233     (block->recs - index - count) * sizeof (rtems_rtl_unresolv_rec_t);
     233    (block->recs - index - count) * sizeof (rtems_rtl_unresolv_rec);
    234234  if (bytes)
    235235    memmove (rec, rec + count, bytes);
    236236  --block->recs;
    237   bytes = count * sizeof (rtems_rtl_unresolv_rec_t);
     237  bytes = count * sizeof (rtems_rtl_unresolv_rec);
    238238  memset (&block->rec + block->recs, 0, bytes);
    239239}
     
    242242rtems_rtl_unresolved_compact (void)
    243243{
    244   rtems_rtl_unresolved_t* unresolved = rtems_rtl_unresolved ();
     244  rtems_rtl_unresolved* unresolved = rtems_rtl_unresolved_unprotected ();
    245245  if (unresolved)
    246246  {
     
    252252    while (!rtems_chain_is_head (&unresolved->blocks, node))
    253253    {
    254       rtems_chain_node* prev = rtems_chain_previous (node);
    255       rtems_rtl_unresolv_block_t* block = (rtems_rtl_unresolv_block_t*) node;
    256       rtems_rtl_unresolv_rec_t* rec = rtems_rtl_unresolved_rec_first (block);
     254      rtems_chain_node*         prev = rtems_chain_previous (node);
     255      rtems_rtl_unresolv_block* block = (rtems_rtl_unresolv_block*) node;
     256      rtems_rtl_unresolv_rec rec = rtems_rtl_unresolved_rec_first (block);
    257257
    258258      while (!rtems_rtl_unresolved_rec_is_last (block, rec))
     
    296296
    297297bool
    298 rtems_rtl_unresolved_table_open (rtems_rtl_unresolved_t* unresolved,
    299                                  size_t                  block_recs)
     298rtems_rtl_unresolved_table_open (rtems_rtl_unresolved* unresolved,
     299                                 size_t                block_recs)
    300300{
    301301  unresolved->marker = 0xdeadf00d;