MaskRay added a comment.

In D72222#1837358 <https://reviews.llvm.org/D72222#1837358>, @nickdesaulniers 
wrote:

> In D72222#1837184 <https://reviews.llvm.org/D72222#1837184>, @MaskRay wrote:
>
> > @peter.smith The build was smooth. Do I need other options to reproduce?
>
>
> I was able to reproduce:
>
>   $ git clone --depth 1 
> git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
>   $ cd linux-next
>   $ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make CC=clang -j71 
> allyesconfig
>   $ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make CC=clang -j71 
> mm/kasan/quarantine.o
>
>
> The exact compiler invocation (via tacking on `V=1` to the above `make` 
> command is:
>
>   $ clang -Wp,-MD,mm/kasan/.quarantine.o.d  -nostdinc -isystem 
> /android0/llvm-project/llvm/build/lib/clang/11.0.0/include 
> -I./arch/arm64/include -I./arch/arm64/include/generated  -I./include 
> -I./arch/arm64/include/uapi -I./arch/arm64/include/generated/uapi 
> -I./include/uapi -I./include/generated/uapi -include 
> ./include/linux/kconfig.h -include ./include/linux/compiler_types.h 
> -D__KERNEL__ -mlittle-endian -DCC_USING_PATCHABLE_FUNCTION_ENTRY 
> -DKASAN_SHADOW_SCALE_SHIFT=3 -Qunused-arguments -Wall -Wundef 
> -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common 
> -fshort-wchar -fno-PIE -Werror=implicit-function-declaration 
> -Werror=implicit-int -Wno-format-security -std=gnu89 
> --target=aarch64-linux-gnu --prefix=/usr/bin/ --gcc-toolchain=/usr 
> -no-integrated-as -Werror=unknown-warning-option -mgeneral-regs-only 
> -DCONFIG_CC_HAS_K_CONSTRAINT=1 -fno-asynchronous-unwind-tables 
> -DKASAN_SHADOW_SCALE_SHIFT=3 -fno-delete-null-pointer-checks 
> -Wno-address-of-packed-member -O2 -Wframe-larger-than=2048 
> -fstack-protector-strong -Wno-format-invalid-specifier -Wno-gnu 
> -Wno-tautological-compare -mno-global-merge -Wno-unused-const-variable 
> -fno-omit-frame-pointer -fno-optimize-sibling-calls 
> -ftrivial-auto-var-init=pattern -fpatchable-function-entry=2 
> -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -fno-strict-overflow 
> -fno-merge-all-constants -fno-stack-check -Werror=date-time 
> -Werror=incompatible-pointer-types -fmacro-prefix-map=./= 
> -Wno-initializer-overrides -Wno-format -Wno-sign-compare 
> -Wno-format-zero-length   -fno-builtin      
> -DKBUILD_MODFILE='"mm/kasan/quarantine"' -DKBUILD_BASENAME='"quarantine"' 
> -DKBUILD_MODNAME='"quarantine"' -c -o mm/kasan/quarantine.o 
> mm/kasan/quarantine.c
>
>   creduce spits out:
>
>
> // $ clang -O2 quarantine.i
>  __attribute__((patchable_function_entry(0))) a() {
>
>   b(({
>     c:
>       &&c;
>   }));
>
> }
>
>  


Thanks. Looks like the following is sufficient to reproduce. (I incorrectly 
thought an empty entry MachineBasicBlock was impossible.) I take the 
opportunity to add test coverage (testing debug-location: D73301 
<https://reviews.llvm.org/D73301>)

  define void @foo() #0 {
  entry:
    unreachable
  }
  
  attributes #0 = { "patchable-function-entry"="2" }

A -DLLVM_ENABLE_ASSERTIONS=on build is required to trigger the assertion 
failure. My `make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- HOSTGCC=gcc 
CC=~/llvm/ReleaseAssert/bin/clang LD=~/llvm/ReleaseAssert/bin/ld.lld 
O=/tmp/arm64 allmodconfig all -j 30` build succeeded. Now I will be in favor of 
pushing the bugfix to release/10.x .

Not clear about -fpatchable-function-entry=N,M where M>0 (D73070 
<https://reviews.llvm.org/D73070>, D73071 <https://reviews.llvm.org/D73071>, 
D73072 <https://reviews.llvm.org/D73072>). For completeness, I'd like them to 
be included in release/10.x so we will not have a clang 10 that does not work 
with M>0.

For `BTI c` issue, GCC has several releases that do not work with 
-mbranch-protection=bti. The Linux kernel has to develop some mechanism to 
detect the undesirable placement of `bti c`, if there are 
-mbranch-protection=bti users. So I don't think that inconsistency in clang 
10.0.0 with GCC will be a problem.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D72222/new/

https://reviews.llvm.org/D72222



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to