Clang will omit the initial comparison in this while loop on the
assumption that two different variables will not have the same address,
which will lead to a crash if the kernel has no constructors.
It will, however, retain the comparison for incomplete arrays
because they may have zero size (and therefore may alias with another
variable). Therefore, change the declarations of the start/end symbols
for the constructor list to incomplete arrays.
Clang will omit the initial comparison in this while loop on the assumption that two different variables will not have the same address, which will lead to a crash if the kernel has no constructors.
It will, however, retain the comparison for incomplete arrays because they may have zero size (and therefore may alias with another variable). Therefore, change the declarations of the start/end symbols for the constructor list to incomplete arrays.