lkml.org 
[lkml]   [2020]   [Aug]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2] lib/string.c: Use freestanding environment
    Date
    gcc can transform the loop in a naive implementation of memset/memcpy
    etc into a call to the function itself. This optimization is enabled by
    -ftree-loop-distribute-patterns.

    This has been the case for a while (see eg [0]), but gcc-10.x enables
    this option at -O2 rather than -O3 as in previous versions.

    Add -ffreestanding, which implicitly disables this optimization with
    gcc. It is unclear whether clang performs such optimizations, but
    hopefully it will also not do so in a freestanding environment.

    [0] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56888

    Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
    ---
    lib/Makefile | 7 ++++++-
    1 file changed, 6 insertions(+), 1 deletion(-)

    diff --git a/lib/Makefile b/lib/Makefile
    index e290fc5707ea..a4a4c6864f51 100644
    --- a/lib/Makefile
    +++ b/lib/Makefile
    @@ -15,11 +15,16 @@ KCOV_INSTRUMENT_debugobjects.o := n
    KCOV_INSTRUMENT_dynamic_debug.o := n
    KCOV_INSTRUMENT_fault-inject.o := n

    +# string.o implements standard library functions like memset/memcpy etc.
    +# Use -ffreestanding to ensure that the compiler does not try to "optimize"
    +# them into calls to themselves.
    +CFLAGS_string.o := -ffreestanding
    +
    # Early boot use of cmdline, don't instrument it
    ifdef CONFIG_AMD_MEM_ENCRYPT
    KASAN_SANITIZE_string.o := n

    -CFLAGS_string.o := -fno-stack-protector
    +CFLAGS_string.o += -fno-stack-protector
    endif

    # Used by KCSAN while enabled, avoid recursion.
    --
    2.26.2
    \
     
     \ /
      Last update: 2020-08-19 16:09    [W:7.537 / U:0.216 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site