945317a sd-bus: set retain attribute on BUS_ERROR_MAP_ELF_REGISTER

1 file Authored by Fangrui Song 3 years ago, Committed by zbyszek 3 years ago,
    sd-bus: set retain attribute on BUS_ERROR_MAP_ELF_REGISTER
    
    LLD 13 and GNU ld 2.37 support -z start-stop-gc which allows garbage
    collection of C identifier name sections despite the __start_/__stop_
    references.  Simply set the retain attribute so that GCC 11 (if
    configure-time binutils is 2.36 or newer)/Clang 13 will set the
    SHF_GNU_RETAIN section attribute to prevent garbage collection.
    
    Without the patch, there are linker errors like the following with -z
    start-stop-gc.
    
    ```
    ld: error: undefined symbol: __start_SYSTEMD_BUS_ERROR_MAP
    >>> referenced by bus-error.c:93 (../src/libsystemd/sd-bus/bus-error.c:93)
    >>>               sd-bus_bus-error.c.o:(bus_error_name_to_errno) in archive src/libsystemd/libsystemd_static.a
    ```