probinson added a subscriber: rsmith. probinson added a comment. In D69393#1729772 <https://reviews.llvm.org/D69393#1729772>, @yonghong-song wrote:
> During experimenting with linux kernel codes, I found that clang does not > allow address_space attribute for function pointers, specifically, in > `clang/lib/Sema/SemaType.cpp`, > > // ISO/IEC TR 18037 S5.3 (amending C99 6.7.3): "A function type shall not be > // qualified by an address-space qualifier." > if (Type->isFunctionType()) { > S.Diag(Attr.getLoc(), diag::err_attribute_address_function_type); > Attr.setInvalid(); > return; > } > > > But linux kernel tries to annotate signal handling function pointer with > address space to indicate it is accessing user space. > > typedef __signalfn_t __user *__sighandler_t; > typedef __restorefn_t __user *__sigrestore_t; > > > Such attribute makes sense for linux since indeed the signal handler code > resides in user space and the kernel pointer > merely points to user memory here. > > But such attributes are not allowed for function pointers. > > Maybe somebody can give some context about this particular ISO/IEC TR 18037 > specification? cc @probinson I have no insight into the standards committees. @rsmith is your guru here. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D69393/new/ https://reviews.llvm.org/D69393 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits