On Tue, Aug 25, 2020 at 5:30 AM Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote: > > On Tue, Aug 25, 2020 at 4:10 PM Nick Desaulniers > <ndesaulniers@xxxxxxxxxx> wrote: > > > > Masahiro, are you implying that we shouldn't take the > > -fno-builtin-stpcpy patch, because Clang is inconsistent? (That can be > > fixed.) Even though -fno-builtin-stpcpy works here as intended? > > https://lore.kernel.org/lkml/20200817220212.338670-2-ndesaulniers@xxxxxxxxxx/ > > > > Otherwise we need to provide an implementation of this symbol in the kernel. > > https://lore.kernel.org/lkml/20200815020946.1538085-1-ndesaulniers@xxxxxxxxxx/ > > > > Please, pick your poison. > > > > I am not a compiler expert. > > Nor am I sure if I am the right person who makes this decision. > But, if so, I would choose the latter. > (implement stpcpy() in the kernel) > > I was addressed last night, so > I should write up my thoughts. > > I do not think -fno-builtin-stpcpy is a > general solution. > > -fno-builtin-stpcpy will work for now > because only Clang implements the transformation > from 'sprintf(dest, "%s", str)' into > 'stpcpy(dest, str) - dest'. > > If GCC implements it some day, > we would run into a problem because > in GCC, it is not -fno-builtin-stpcpy, but > -fno-builtin-sprintf that disables that optimization. > > In this regard, 'KBUILD_CFLAGS += -fno-builtin-sprintf' > would be more future-proof, but it is potentially > an overkill. > We want to disable optimization from sprintf() to stpcpy(), > but we may still benefit from the optimization from > sprintf() into something else. > > > Linus is uncomfortable with this kind of compiler magic. > If we take compiler's freedom away, > -ffreestanding is a big hammer to solve this problem. > > If we welcome the compiler's optimization, > we should implement stpcpy(), bcmp(), and whatever > until we solve all link errors. Speculating that -ffreestanding is untenable, submitted v3: https://lore.kernel.org/lkml/20200825135838.2938771-1-ndesaulniers@xxxxxxxxxx/T/#u -- Thanks, ~Nick Desaulniers