cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

compiler.h (912B)


      1/* SPDX-License-Identifier: LGPL-2.1-only OR MIT */
      2/*
      3 * rseq/compiler.h
      4 *
      5 * Work-around asm goto compiler bugs.
      6 *
      7 * (C) Copyright 2021 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      8 */
      9
     10#ifndef RSEQ_COMPILER_H
     11#define RSEQ_COMPILER_H
     12
     13/*
     14 * gcc prior to 4.8.2 miscompiles asm goto.
     15 * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
     16 *
     17 * gcc prior to 8.1.0 miscompiles asm goto at O1.
     18 * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103908
     19 *
     20 * clang prior to version 13.0.1 miscompiles asm goto at O2.
     21 * https://github.com/llvm/llvm-project/issues/52735
     22 *
     23 * Work around these issues by adding a volatile inline asm with
     24 * memory clobber in the fallthrough after the asm goto and at each
     25 * label target.  Emit this for all compilers in case other similar
     26 * issues are found in the future.
     27 */
     28#define rseq_after_asm_goto()	asm volatile ("" : : : "memory")
     29
     30#endif  /* RSEQ_COMPILER_H_ */