On AIX, the linker needs to check whether a given lto_module_t contains any constructor/destructor functions, in order to implement the behavior of the -bcdtors:all flag. See https://www.ibm.com/docs/en/aix/7.2?topic=l-ld-command for the flag's documentation.
In llvm IR, constructor (destructor) functions are added to a special global array @llvm.global_ctors (@llvm.global_dtors).
However, because these two symbols are artificial, they are not visited during the symbol traversal (using the lto_module_get_[num_symbols|symbol_name|symbol_attribute] API).
This patch adds a new function to the libLTO interface that checks the presence of one or both of these two symbols.
clang-tidy: warning: invalid case style for function 'lto_module_has_ctor_dtor' [readability-identifier-naming]
not useful
clang-tidy: warning: invalid case style for parameter 'mod' [readability-identifier-naming]
not useful