Skip to content
  1. Jun 17, 2015
  2. Jun 16, 2015
  3. Jun 15, 2015
    • Colin LeMahieu's avatar
      [Hexagon] Using readobj rather than objdump. · ded2e906
      Colin LeMahieu authored
      llvm-svn: 239770
      ded2e906
    • Colin LeMahieu's avatar
      [Hexagon] PC-relative offsets are relative to packet start rather than the... · a071a8e5
      Colin LeMahieu authored
      [Hexagon] PC-relative offsets are relative to packet start rather than the offset of the relocation.  Set relocation addend and check it's correct in the ELF.
      
      llvm-svn: 239769
      a071a8e5
    • Simon Pilgrim's avatar
      [X86][SSE] Added tests for vector i8/i16 to f32/f64 conversions · aa9f7129
      Simon Pilgrim authored
      llvm-svn: 239767
      aa9f7129
    • Peter Collingbourne's avatar
      Protection against stack-based memory corruption errors using SafeStack · 82437bf7
      Peter Collingbourne authored
      This patch adds the safe stack instrumentation pass to LLVM, which separates
      the program stack into a safe stack, which stores return addresses, register
      spills, and local variables that are statically verified to be accessed
      in a safe way, and the unsafe stack, which stores everything else. Such
      separation makes it much harder for an attacker to corrupt objects on the
      safe stack, including function pointers stored in spilled registers and
      return addresses. You can find more information about the safe stack, as
      well as other parts of or control-flow hijack protection technique in our
      OSDI paper on code-pointer integrity (http://dslab.epfl.ch/pubs/cpi.pdf)
      and our project website (http://levee.epfl.ch).
      
      The overhead of our implementation of the safe stack is very close to zero
      (0.01% on the Phoronix benchmarks). This is lower than the overhead of
      stack cookies, which are supported by LLVM and are commonly used today,
      yet the security guarantees of the safe stack are strictly stronger than
      stack cookies. In some cases, the safe stack improves performance due to
      better cache locality.
      
      Our current implementation of the safe stack is stable and robust, we
      used it to recompile multiple projects on Linux including Chromium, and
      we also recompiled the entire FreeBSD user-space system and more than 100
      packages. We ran unit tests on the FreeBSD system and many of the packages
      and observed no errors caused by the safe stack. The safe stack is also fully
      binary compatible with non-instrumented code and can be applied to parts of
      a program selectively.
      
      This patch is our implementation of the safe stack on top of LLVM. The
      patches make the following changes:
      
      - Add the safestack function attribute, similar to the ssp, sspstrong and
        sspreq attributes.
      
      - Add the SafeStack instrumentation pass that applies the safe stack to all
        functions that have the safestack attribute. This pass moves all unsafe local
        variables to the unsafe stack with a separate stack pointer, whereas all
        safe variables remain on the regular stack that is managed by LLVM as usual.
      
      - Invoke the pass as the last stage before code generation (at the same time
        the existing cookie-based stack protector pass is invoked).
      
      - Add unit tests for the safe stack.
      
      Original patch by Volodymyr Kuznetsov and others at the Dependable Systems
      Lab at EPFL; updates and upstreaming by myself.
      
      Differential Revision: http://reviews.llvm.org/D6094
      
      llvm-svn: 239761
      82437bf7
    • Alex Lorenz's avatar
      MIR Serialization: Connect the machine function analysis pass to the MIR parser. · 735c47ec
      Alex Lorenz authored
      This commit connects the machine function analysis pass (which creates machine
      functions) to the MIR parser, which will initialize the machine functions 
      with the state from the MIR file and reconstruct the machine IR.
      
      This commit introduces a new interface called 'MachineFunctionInitializer',
      which can be used to provide custom initialization for the machine functions.
      
      This commit also introduces a new diagnostic class called 
      'DiagnosticInfoMIRParser' which is used for MIR parsing errors.
      This commit modifies the default diagnostic handling in LLVMContext - now the
      the diagnostics are printed directly into llvm::errs() so that the MIR parsing 
      errors can be printed with colours.  
      
      Reviewers: Justin Bogner
      
      Differential Revision: http://reviews.llvm.org/D9928
      
      llvm-svn: 239753
      735c47ec
    • Sanjoy Das's avatar
      Add "REQUIRES: asserts" to test case that uses -debug-only · 784582f1
      Sanjoy Das authored
      llvm-svn: 239748
      784582f1
    • Sanjoy Das's avatar
      [CodeGen] Add a pass to fold null checks into nearby memory operations. · 69fad079
      Sanjoy Das authored
      Summary:
      This change adds an "ImplicitNullChecks" target dependent pass.  This
      pass folds null checks into memory operation using the FAULTING_LOAD
      pseudo-op introduced in previous patches.
      
      Depends on D10197
      Depends on D10199
      Depends on D10200
      
      Reviewers: reames, rnk, pgavlin, JosephTremoulet, atrick
      
      Reviewed By: atrick
      
      Subscribers: ab, JosephTremoulet, llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D10201
      
      llvm-svn: 239743
      69fad079
    • Evgeny Astigeevich's avatar
      On behalf of Alexandros Lamprineas: · ff1f4be4
      Evgeny Astigeevich authored
      LLVM targeting aarch64 doesn't correctly produce aligned accesses for non-aligned
      data at -O0/fast-isel (-mno-unaligned-access).
      The root cause seems to be in fast-isel not producing unaligned access correctly
      for -mno-unaligned-access.
      
      The patch just aborts fast-isel for loads and stores when -mno-unaligned-access is
      present. 
      The regression test is updated to check this new test case (-mno-unaligned-access 
      together with fast-isel).
      
      Differential Revision: http://reviews.llvm.org/D10360
      
      llvm-svn: 239732
      ff1f4be4
    • Rafael Espindola's avatar
      gold-plugin: save the .o when given -save-temps. · 92200d23
      Rafael Espindola authored
      The plugin now save the bitcode before and after optimizations and the
      .o that is passed to the linker.
      
      llvm-svn: 239726
      92200d23
Loading