binutils-gdb/gas/doc
H.J. Lu ae531041c7 i386: Generate lfence with load/indirect branch/ret [CVE-2020-0551]
Add 3 command-line options to generate lfence for load, indirect near
branch and ret to help mitigate:

https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00334.html
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-0551

1. -mlfence-after-load=[no|yes]:
  -mlfence-after-load=yes generates lfence after load instructions.
2. -mlfence-before-indirect-branch=[none|all|memory|register]:
  a. -mlfence-before-indirect-branch=all generates lfence before indirect
  near branches via register and a warning before indirect near branches
  via memory.
  b. -mlfence-before-indirect-branch=memory issue a warning before
  indirect near branches via memory.
  c. -mlfence-before-indirect-branch=register generates lfence before
  indirect near branches via register.
Note that lfence won't be generated before indirect near branches via
register with -mlfence-after-load=yes since lfence will be generated
after loading branch target register.
3. -mlfence-before-ret=[none|or|not]
  a. -mlfence-before-ret=or generates or with lfence before ret.
  b. -mlfence-before-ret=not generates not with lfence before ret.

A warning will be issued and lfence won't be generated before indirect
near branch and ret if the previous item is a prefix or a constant
directive, which may be used to hardcode an instruction, since there
is no clear instruction boundary.

	* config/tc-i386.c (lfence_after_load): New.
	(lfence_before_indirect_branch_kind): New.
	(lfence_before_indirect_branch): New.
	(lfence_before_ret_kind): New.
	(lfence_before_ret): New.
	(last_insn): New.
	(load_insn_p): New.
	(insert_lfence_after): New.
	(insert_lfence_before): New.
	(md_assemble): Call insert_lfence_before and insert_lfence_after.
	Set last_insn.
	(OPTION_MLFENCE_AFTER_LOAD): New.
	(OPTION_MLFENCE_BEFORE_INDIRECT_BRANCH): New.
	(OPTION_MLFENCE_BEFORE_RET): New.
	(md_longopts): Add -mlfence-after-load=,
	-mlfence-before-indirect-branch= and -mlfence-before-ret=.
	(md_parse_option): Handle -mlfence-after-load=,
	-mlfence-before-indirect-branch= and -mlfence-before-ret=.
	(md_show_usage): Display -mlfence-after-load=,
	-mlfence-before-indirect-branch= and -mlfence-before-ret=.
	(i386_cons_align): New.
	* config/tc-i386.h (i386_cons_align): New.
	(md_cons_align): New.
	* doc/c-i386.texi: Document -mlfence-after-load=,
	-mlfence-before-indirect-branch= and -mlfence-before-ret=.
2020-03-11 09:46:19 -07:00
..
all.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
as.texi Add support for generating DWARF-5 format directory and file name tables from the assembler. 2020-03-11 10:17:14 +00:00
c-aarch64.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-alpha.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-arc.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-arm.texi [binutils][arm] arm support for ARMv8.m Custom Datapath Extension 2020-02-10 16:50:14 +00:00
c-avr.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-bfin.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-bpf.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-cr16.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-cris.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-csky.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-d10v.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-d30v.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-epiphany.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-h8300.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-hppa.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-i386.texi i386: Generate lfence with load/indirect branch/ret [CVE-2020-0551] 2020-03-11 09:46:19 -07:00
c-ia64.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-ip2k.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-lm32.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-m32c.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-m32r.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-m68hc11.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-m68k.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-metag.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-microblaze.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-mips.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-mmix.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-msp430.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-mt.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-nds32.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-nios2.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-ns32k.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-or1k.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-pdp11.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-pj.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-ppc.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-pru.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-riscv.texi RISC-V: Support assembler modifier %got_pcrel_hi. 2020-03-04 17:11:37 -08:00
c-rl78.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-rx.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-s12z.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-s390.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-score.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-sh.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-sparc.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-tic6x.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-tic54x.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-tilegx.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-tilepro.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-v850.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-vax.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-visium.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-wasm32.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-xc16x.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-xgate.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-xstormy16.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-xtensa.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-z8k.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
c-z80.texi Various fixes for the Z80 support. 2020-02-19 17:46:10 +00:00
fdl.texi
h8.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
internals.texi Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
Makefile.am Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
Makefile.in Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30