[all-commits] [llvm/llvm-project] 66e493: [asan] Stop instrumenting user-defined ELF sections

Michał Górny via All-commits all-commits at lists.llvm.org
Sat Oct 3 10:54:56 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 66e493f81e8e27b4a498a6dac54d404c2333fa5e
      https://github.com/llvm/llvm-project/commit/66e493f81e8e27b4a498a6dac54d404c2333fa5e
  Author: Michał Górny <mgorny at moritz.systems>
  Date:   2020-10-03 (Sat, 03 Oct 2020)

  Changed paths:
    M llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
    A llvm/test/Instrumentation/AddressSanitizer/do-not-instrument-netbsd-link_set.ll
    A llvm/test/Instrumentation/AddressSanitizer/instrument-section-invalid-c-ident.ll

  Log Message:
  -----------
  [asan] Stop instrumenting user-defined ELF sections

Do not instrument user-defined ELF sections (whose names resemble valid
C identifiers).  They may have special use semantics and modifying them
may break programs.  This is e.g. the case with NetBSD __link_set API
that expects these sections to store consecutive array elements.

Differential Revision: https://reviews.llvm.org/D76665


  Commit: 80b108f404fc9e88889df7247f6ae9697083cbda
      https://github.com/llvm/llvm-project/commit/80b108f404fc9e88889df7247f6ae9697083cbda
  Author: Michał Górny <mgorny at moritz.systems>
  Date:   2020-10-03 (Sat, 03 Oct 2020)

  Changed paths:
    M lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD_x86_64.cpp

  Log Message:
  -----------
  [lldb] [Process/NetBSD] Fix reading FIP/FDP registers

Fix reading FIP/FDP registers to correctly return segment and offset
parts.  On amd64, this roughly matches the Linux behavior of splitting
the 64-bit FIP/FDP into two halves, and putting the higher 32 bits
into f*seg and lower into f*off.  Well, actually we use only 16 bits
of higher half but the CPUs do not seem to handle more than that anyway.

Differential Revision: https://reviews.llvm.org/D88681


  Commit: 9821632056dce9e2150bab9c0fbd9b2c7da64258
      https://github.com/llvm/llvm-project/commit/9821632056dce9e2150bab9c0fbd9b2c7da64258
  Author: Michał Górny <mgorny at moritz.systems>
  Date:   2020-10-03 (Sat, 03 Oct 2020)

  Changed paths:
    M lldb/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD_x86_64.cpp
    M lldb/source/Plugins/Process/Utility/lldb-x86-register-enums.h

  Log Message:
  -----------
  [lldb] [Process/NetBSD] Fix crash on unsupported i386 regs

Multiple fixes related to bugs discovered while debugging a crash
when reading all registers on i386.

The underlying problem was that GetSetForNativeRegNum() did not account
for MPX registers on i386, and since it only compared against upper
bounds of each known register set, the MPX registers were classified
into the wrong set and therefore considered supported.  However, they
were not expected in RegNumX86ToX86_64() and caused the assertion
to fail.

This includes:

- adding (unused) i386 → x86_64 translations for MPX registers
- fixing GetSetForNativeRegNum() to check both lower and upper bound
  for register sets, to avoid wrongly classifying unhandled register
  sets
- adding missing range check for MPX registers on i386
- renaming k_last_mpxr to k_last_mpxr_i386 for consistency
- replacing return-assertions with llvm_unreachable() and adding more
  checks for unexpected parameters

Differential Revision: https://reviews.llvm.org/D88682


  Commit: 381bdc75ee2ca2fb9784ffb2f6b90accd8eab3b6
      https://github.com/llvm/llvm-project/commit/381bdc75ee2ca2fb9784ffb2f6b90accd8eab3b6
  Author: Michał Górny <mgorny at moritz.systems>
  Date:   2020-10-03 (Sat, 03 Oct 2020)

  Changed paths:
    A lldb/test/Shell/Register/Inputs/x86-fp-read.cpp
    A lldb/test/Shell/Register/Inputs/x86-fp-write.cpp
    A lldb/test/Shell/Register/x86-64-fp-write.test
    A lldb/test/Shell/Register/x86-fp-read.test
    A lldb/test/Shell/Register/x86-fp-write.test

  Log Message:
  -----------
  [lldb] [test/Register] Add read/write tests for x87 regs

Add a partial read/write tests for x87 FPU registers.  This includes
reading and writing ST registers, control registers and floating-point
exception data registers (fop, fip, fdp).

The tests assume the current (roughly incorrect) behavior of reporting
the 'abridged' 8-bit ftag state as 16-bit ftag.  They also assume Linux
plugin behavior of reporting fip/fdp split into halves as (fiseg, fioff)
and (foseg, fooff).

Differential Revision: https://reviews.llvm.org/D88583


Compare: https://github.com/llvm/llvm-project/compare/53fc426088d7...381bdc75ee2c


More information about the All-commits mailing list