• R
    remove unnecessary and problematic _Noreturn from crt/ldso startup · 54b7564b
    Rich Felker 提交于
    after commit a48ccc15 removed the use
    of _Noreturn on the stage3_func type (which only worked due to it
    being defined to the "GNU C" attribute in C99 mode), GCC could no
    longer assume that the ends of __dls2 and __dls2b are unreachable, and
    produced a warning that a function marked _Noreturn returns.
    
    also, since commit 4390383b, the
    _Noreturn declaration for __libc_start_main in crt1/rcrt1 has been not
    only inconsistent with the definition, but wrong. formally,
    __libc_start_main does return, via a (hopefully) tail call to a helper
    function after the barrier. incorrect usage of _Noreturn in the
    declaration was probably formal UB.
    
    the _Noreturn specifiers were not useful in any of these places, so
    remove them all. now, the only remaining usage of _Noreturn is in
    public interfaces where _Noreturn is part of their contract.
    54b7564b
crt1.c 352 字节