Changeset 2eadda9 in mainline for uspace/lib/c/generic/libc.c


Ignore:
Timestamp:
2018-07-11T17:45:30Z (7 years ago)
Author:
Jiří Zárevúcky <jiri.zarevucky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
99d3123
Parents:
c2c4127
git-author:
Jiří Zárevúcky <jiri.zarevucky@…> (2018-07-11 17:08:12)
git-committer:
Jiří Zárevúcky <jiri.zarevucky@…> (2018-07-11 17:45:30)
Message:

Remove undefined references to main program from shared libc.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/libc.c

    rc2c4127 r2eadda9  
    6161#endif
    6262
     63progsymbols_t __progsymbols;
     64
    6365static bool env_setup = false;
    6466
     
    116118         * C++ Static constructor calls.
    117119         */
    118         ptrdiff_t init_array_entries = (__init_array_end - __init_array_start);
    119120
    120         for (int i = init_array_entries - 1; i >= 0; --i)
    121                 __init_array_start[i]();
     121        if (__progsymbols.preinit_array) {
     122                for (int i = __progsymbols.preinit_array_len - 1; i >= 0; --i)
     123                        __progsymbols.preinit_array[i]();
     124        }
     125
     126        if (__progsymbols.init_array) {
     127                for (int i = __progsymbols.init_array_len - 1; i >= 0; --i)
     128                        __progsymbols.init_array[i]();
     129        }
    122130
    123131        /*
     
    125133         * according the result
    126134         */
    127         int retval = main(argc, argv);
     135        int retval = __progsymbols.main(argc, argv);
    128136        exit(retval);
    129137}
     
    136144         * when the respective constructor is called.
    137145         */
    138         ptrdiff_t fini_array_entries = (__fini_array_end - __fini_array_start);
    139146
    140         for (int i = 0; i < fini_array_entries; ++i)
    141                 __fini_array_start[i]();
     147        for (int i = 0; i < __progsymbols.fini_array_len; ++i)
     148                __progsymbols.fini_array[i]();
    142149
    143150        if (env_setup) {
     
    148155
    149156        __SYSCALL1(SYS_TASK_EXIT, false);
    150 
    151         /* Unreachable */
    152         while (true)
    153                 ;
     157        __builtin_unreachable();
    154158}
    155159
     
    157161{
    158162        __SYSCALL1(SYS_TASK_EXIT, true);
    159 
    160         /* Unreachable */
    161         while (true)
    162                 ;
     163        __builtin_unreachable();
    163164}
    164165
Note: See TracChangeset for help on using the changeset viewer.