From: Bill Wendling Date: Wed, 19 Nov 2008 05:56:17 +0000 (+0000) Subject: - Move the stackprotector intrinsic to the general section. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=69e4adb22e43f15bf96803c86f8466e3ba84cade;p=oota-llvm.git - Move the stackprotector intrinsic to the general section. - Rewrite the sentence to make it look as if English is my first language. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59592 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/docs/LangRef.html b/docs/LangRef.html index 553568007f2..59be63b75c8 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -214,11 +214,6 @@
  • 'llvm.init.trampoline' Intrinsic
  • -
  • Stack Protector Intrinsic -
      -
    1. 'llvm.stackprotector' Intrinsic
    2. -
    -
  • Atomic intrinsics
    1. llvm.memory_barrier
    2. @@ -239,11 +234,13 @@
    3. General intrinsics
      1. - llvm.var.annotation' Intrinsic
      2. + 'llvm.var.annotation' Intrinsic
      3. - llvm.annotation.*' Intrinsic
      4. + 'llvm.annotation.*' Intrinsic
      5. - llvm.trap' Intrinsic
      6. + 'llvm.trap' Intrinsic +
      7. + 'llvm.stackprotector' Intrinsic
    @@ -5807,54 +5804,6 @@ declare i8* @llvm.init.trampoline(i8* <tramp>, i8* <func>, i8* <n

    - - - -
    -

    - This intrinsic is used when stack protectors are required. LLVM generates a - call to load the randomized stack protector guard's value. The intrinsic is - used so that LLVM can ensure that the stack guard is placed onto the stack in - the appropriate place—before local variables are allocated on the stack. -

    -
    - - - -
    -
    Syntax:
    -
    -declare void @llvm.stackprotector( i8* <guard>, i8** <slot> )
    -
    -
    -
    Overview:
    -

    - The llvm.stackprotector intrinsic takes the guard and stores - it onto the stack at slot. The stack slot is adjusted to ensure that - it's before local variables are allocated on the stack. -

    -
    Arguments:
    -

    - The llvm.stackprotector intrinsic requires two pointer arguments. The - first argument is the value loaded from the stack guard - @__stack_chk_guard. The second variable is an alloca that - has enough space to hold the value of the guard. -

    -
    Semantics:
    -

    - This intrinsic causes the prologue/epilogue inserter to force the position of - the AllocaInst stack slot to be before local variables on the - stack. This is to ensure that if a local variable on the stack is overwritten, - it will destroy the value of the guard. When the function exits, the guard on - the stack is checked against the original guard. If they're different, then - the program aborts by calling the __stack_chk_fail() function. -

    -
    -
    Atomic Operations and Synchronization Intrinsics @@ -6472,6 +6421,40 @@ call of the abort() function.

    + + +
    +
    Syntax:
    +
    +declare void @llvm.stackprotector( i8* <guard>, i8** <slot> )
    +
    +
    +
    Overview:
    +

    + The llvm.stackprotector intrinsic takes the guard and stores + it onto the stack at slot. The stack slot is adjusted to ensure that + it is placed on the stack before local variables. +

    +
    Arguments:
    +

    + The llvm.stackprotector intrinsic requires two pointer arguments. The + first argument is the value loaded from the stack guard + @__stack_chk_guard. The second variable is an alloca that + has enough space to hold the value of the guard. +

    +
    Semantics:
    +

    + This intrinsic causes the prologue/epilogue inserter to force the position of + the AllocaInst stack slot to be before local variables on the + stack. This is to ensure that if a local variable on the stack is overwritten, + it will destroy the value of the guard. When the function exits, the guard on + the stack is checked against the original guard. If they're different, then + the program aborts by calling the __stack_chk_fail() function. +

    +
    +