Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 0d073b8 in mainline


Ignore:
Timestamp:
2019-04-06T11:46:44Z (22 months ago)
Author:
Petr Pavlu <setup@…>
Children:
a4bd537
Parents:
b59836d5
git-author:
Petr Pavlu <setup@…> (2019-03-31 13:00:13)
git-committer:
Petr Pavlu <setup@…> (2019-04-06 11:46:44)
Message:

Move dynamic-linking related ELF definitions to ABI includes

Move dynamic-linking related ELF definitions from
uspace/lib/c/include/rtld/elf_dyn.h to abi/include/abi/elf.h. This
allows their use by the AArch64 boot code.

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • abi/include/abi/elf.h

    rb59836d5 r0d073b8  
    245245
    246246/**
     247 * Dynamic array tags
     248 */
     249enum elf_dynamic_tag {
     250        DT_NULL     = 0,
     251        DT_NEEDED   = 1,
     252        DT_PLTRELSZ = 2,
     253        DT_PLTGOT   = 3,
     254        DT_HASH     = 4,
     255        DT_STRTAB   = 5,
     256        DT_SYMTAB   = 6,
     257        DT_RELA     = 7,
     258        DT_RELASZ   = 8,
     259        DT_RELAENT  = 9,
     260        DT_STRSZ    = 10,
     261        DT_SYMENT   = 11,
     262        DT_INIT     = 12,
     263        DT_FINI     = 13,
     264        DT_SONAME   = 14,
     265        DT_RPATH    = 15,
     266        DT_SYMBOLIC = 16,
     267        DT_REL      = 17,
     268        DT_RELSZ    = 18,
     269        DT_RELENT   = 19,
     270        DT_PLTREL   = 20,
     271        DT_DEBUG    = 21,
     272        DT_TEXTREL  = 22,
     273        DT_JMPREL   = 23,
     274        DT_BIND_NOW = 24,
     275        DT_LOPROC   = 0x70000000,
     276        DT_HIPROC   = 0x7fffffff,
     277};
     278
     279/**
     280 * Special section indexes
     281 */
     282enum {
     283        SHN_UNDEF     = 0,
     284        SHN_LORESERVE = 0xff00,
     285        SHN_LOPROC    = 0xff00,
     286        SHN_HIPROC    = 0xff1f,
     287        SHN_ABS       = 0xfff1,
     288        SHN_COMMON    = 0xfff2,
     289        SHN_HIRESERVE = 0xffff,
     290};
     291
     292/**
     293 * Special symbol table index
     294 */
     295enum {
     296        STN_UNDEF = 0,
     297};
     298
     299/**
    247300 * ELF data types
    248301 *
     
    406459};
    407460
     461/**
     462 * Dynamic structure
     463 */
     464struct elf32_dyn {
     465        elf_sword d_tag;
     466        union {
     467                elf_word d_val;
     468                elf32_addr d_ptr;
     469        } d_un;
     470};
     471
     472struct elf64_dyn {
     473        elf_sxword d_tag;
     474        union {
     475                elf_xword d_val;
     476                elf64_addr d_ptr;
     477        } d_un;
     478};
     479
     480struct elf32_rel {
     481        elf32_addr r_offset;
     482        elf_word r_info;
     483};
     484
     485struct elf32_rela {
     486        elf32_addr r_offset;
     487        elf_word r_info;
     488        elf_sword r_addend;
     489};
     490
     491struct elf64_rel {
     492        elf64_addr r_offset;
     493        elf_xword r_info;
     494};
     495
     496struct elf64_rela {
     497        elf64_addr r_offset;
     498        elf_xword r_info;
     499        elf_sxword r_addend;
     500};
     501
     502#define ELF32_R_SYM(i) ((i) >> 8)
     503#define ELF32_R_TYPE(i) ((unsigned char)(i))
     504
     505#define ELF64_R_SYM(i) ((i) >> 32)
     506#define ELF64_R_TYPE(i) ((i) & 0xffffffffL)
     507
    408508#ifdef __32_BITS__
    409509typedef struct elf32_header elf_header_t;
     
    412512typedef struct elf32_symbol elf_symbol_t;
    413513typedef struct elf32_note elf_note_t;
     514typedef struct elf32_dyn elf_dyn_t;
     515typedef struct elf32_rel elf_rel_t;
     516typedef struct elf32_rela elf_rela_t;
    414517#endif
    415518
     
    420523typedef struct elf64_symbol elf_symbol_t;
    421524typedef struct elf64_note elf_note_t;
     525typedef struct elf64_dyn elf_dyn_t;
     526typedef struct elf64_rel elf_rel_t;
     527typedef struct elf64_rela elf_rela_t;
    422528#endif
    423529
  • uspace/lib/c/include/rtld/elf_dyn.h

    rb59836d5 r0d073b8  
    3939#include <libarch/rtld/elf_dyn.h>
    4040
    41 #define ELF32_R_SYM(i) ((i) >> 8)
    42 #define ELF32_R_TYPE(i) ((unsigned char)(i))
    43 
    44 #define ELF64_R_SYM(i) ((i) >> 32)
    45 #define ELF64_R_TYPE(i) ((i) & 0xffffffffL)
    46 
    47 struct elf32_dyn {
    48         elf_sword d_tag;
    49         union {
    50                 elf_word d_val;
    51                 elf32_addr d_ptr;
    52         } d_un;
    53 };
    54 
    55 struct elf64_dyn {
    56         elf_sxword d_tag;
    57         union {
    58                 elf_xword d_val;
    59                 elf64_addr d_ptr;
    60         } d_un;
    61 };
    62 
    63 struct elf32_rel {
    64         elf32_addr r_offset;
    65         elf_word r_info;
    66 };
    67 
    68 struct elf32_rela {
    69         elf32_addr r_offset;
    70         elf_word r_info;
    71         elf_sword r_addend;
    72 };
    73 
    74 struct elf64_rel {
    75         elf64_addr r_offset;
    76         elf_xword r_info;
    77 };
    78 
    79 struct elf64_rela {
    80         elf64_addr r_offset;
    81         elf_xword r_info;
    82         elf_sxword r_addend;
    83 };
    84 
    85 #ifdef __32_BITS__
    86 typedef struct elf32_dyn elf_dyn_t;
    87 typedef struct elf32_rel elf_rel_t;
    88 typedef struct elf32_rela elf_rela_t;
    89 #endif
    90 
    91 #ifdef __64_BITS__
    92 typedef struct elf64_dyn elf_dyn_t;
    93 typedef struct elf64_rel elf_rel_t;
    94 typedef struct elf64_rela elf_rela_t;
    95 #endif
    96 
    97 /*
    98  * Dynamic array tags
    99  */
    100 #define DT_NULL         0
    101 #define DT_NEEDED       1
    102 #define DT_PLTRELSZ     2
    103 #define DT_PLTGOT       3
    104 #define DT_HASH         4
    105 #define DT_STRTAB       5
    106 #define DT_SYMTAB       6
    107 #define DT_RELA         7
    108 #define DT_RELASZ       8
    109 #define DT_RELAENT      9
    110 #define DT_STRSZ        10
    111 #define DT_SYMENT       11
    112 #define DT_INIT         12
    113 #define DT_FINI         13
    114 #define DT_SONAME       14
    115 #define DT_RPATH        15
    116 #define DT_SYMBOLIC     16
    117 #define DT_REL          17
    118 #define DT_RELSZ        18
    119 #define DT_RELENT       19
    120 #define DT_PLTREL       20
    121 #define DT_DEBUG        21
    122 #define DT_TEXTREL      22
    123 #define DT_JMPREL       23
    124 #define DT_BIND_NOW     24
    125 #define DT_LOPROC       0x70000000
    126 #define DT_HIPROC       0x7fffffff
    127 
    128 /*
    129  * Special section indexes
    130  */
    131 #define SHN_UNDEF       0
    132 #define SHN_LORESERVE   0xff00
    133 #define SHN_LOPROC      0xff00
    134 #define SHN_HIPROC      0xff1f
    135 #define SHN_ABS         0xfff1
    136 #define SHN_COMMON      0xfff2
    137 #define SHN_HIRESERVE   0xffff
    138 
    139 /*
    140  * Special symbol table index
    141  */
    142 #define STN_UNDEF       0
    143 
    14441#endif
    14542
Note: See TracChangeset for help on using the changeset viewer.