clang: allow ifunc resolvers to accept arguments
Previously Clang required ifunc resolution functions to take no arguments, presumably because GCC documented ifunc resolvers as taking no arguments. However, GCC accepts resolvers accepting arguments, and our rtld passes CPU ID information (cpuid, hwcap, etc.) to ifunc resolvers. Just remove the check from the in-tree compiler for our in- tree compiler; a different (per-OS) approach may be required upstream. Reported by: mjg Approved by: re (rgrimes) MFC after: 1 week Relnotes: Yes Sponsored by: The FreeBSD Foundation
This commit is contained in:
parent
5f11ee2075
commit
ea28e71e86
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=339019
@ -321,8 +321,6 @@ void CodeGenModule::checkAliases() {
|
||||
assert(FTy);
|
||||
if (!FTy->getReturnType()->isPointerTy())
|
||||
Diags.Report(Location, diag::err_ifunc_resolver_return);
|
||||
if (FTy->getNumParams())
|
||||
Diags.Report(Location, diag::err_ifunc_resolver_params);
|
||||
}
|
||||
|
||||
llvm::Constant *Aliasee = Alias->getIndirectSymbol();
|
||||
|
@ -1,3 +1,3 @@
|
||||
/* $FreeBSD$ */
|
||||
|
||||
#define FREEBSD_CC_VERSION 1200015
|
||||
#define FREEBSD_CC_VERSION 1200016
|
||||
|
Loading…
Reference in New Issue
Block a user