Clang 12 does not allow re-defining weak symbols as non-weak. Therefore, if
we have both SET_DECLARE and DATA_SET/etc. in the same file this triggers
compiler errors. This commit changes the default behaviour of SET_DECLARE()
to declare a non-weak symbol (i.e. we will get linker errors if the set is
empty) and adds a new SET_DECLARE_WEAK() that can be used for optional
This also drops the __GLOBL() that was added back in commit
since both ld.bfd and ld.lld automatically add the __start/__stop
symbols for all orphan sections with the name being a valid C identifier.