Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 14 additions & 13 deletions docs/build/reference/hotpatch-create-hotpatchable-image.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,36 @@
---
description: "Learn more about: /hotpatch (Create Hotpatchable Image)"
title: "/hotpatch (Create Hotpatchable Image)"
ms.date: "12/7/2021"
description: "Learn more about: /hotpatch (Create hotpatchable image)"
title: "/hotpatch (Create hotpatchable image)"
ms.date: "9/4/2025"
f1_keywords: ["/hotpatch", "VC.Project.VCCLCompilerTool.CreateHotpatchableImage"]
helpviewer_keywords: ["hot patching", "-hotpatch compiler option [C++]", "/hotpatch compiler option [C++]", "hotpatching"]
ms.assetid: aad539b6-c053-4c78-8682-853d98327798
helpviewer_keywords: ["hot patching", "hotpatching", "-hotpatch compiler option [C++]", "/hotpatch compiler option [C++]"]
---
# /hotpatch (Create Hotpatchable Image)
# /hotpatch (Create hotpatchable image)

Prepares an image for hot patching.
Prepares an image for hotpatching.

## Syntax

```
/hotpatch
```

> [!NOTE]
> This option is only available for x86

## Remarks

When **/hotpatch** is used in a compilation, the compiler ensures that the first instruction of each function is at least two bytes, and no jump within the function goes to the first instruction. These conditions are required for hot patching.
When `/hotpatch` is used during compilation, the compiler ensures that the first instruction of each function is at least 2 bytes long and that no jump within the function goes to the first instruction. These conditions are required for hotpatching.

To complete the preparation for making an image hotpatchable, after you use **/hotpatch** to compile, you must use [/FUNCTIONPADMIN (Create Hotpatchable Image)](functionpadmin-create-hotpatchable-image.md) to link. When you compile and link an image by using one invocation of cl.exe, **/hotpatch** implies **/functionpadmin**.
To complete the preparation for making an image hotpatchable, after you compile with `/hotpatch`, use [`/functionpadmin`](functionpadmin-create-hotpatchable-image.md) to link. When you compile and link an image using one invocation of `cl.exe`, `/hotpatch` implies `/functionpadmin`.

Because instructions are always two bytes or larger on the ARM architecture, and because x64 compilation is always treated as if **/hotpatch** has been specified, you don't have to specify **/hotpatch** when you compile for these targets; however, you must still link by using **/functionpadmin** to create hotpatchable images for them. The **/hotpatch** compiler option only affects x86 compilation.
> [!TIP]
> Arm64 and x64 architectures are always treated as hotpatchable. But you must still link by using `/functionpadmin` to create hotpatchable images for them.

### To set this compiler option in the Visual Studio development environment

1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md).

1. Select the **Configuration Properties** > **C/C++** > **Command Line** property page.

1. Add the compiler option to the **Additional Options** box.

### To set this compiler option programmatically
Expand All @@ -38,5 +39,5 @@ Because instructions are always two bytes or larger on the ARM architecture, and

## See also

[MSVC Compiler Options](compiler-options.md)<br/>
[MSVC Compiler Options](compiler-options.md)\
[MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md)
264 changes: 176 additions & 88 deletions docs/docfx.json
Original file line number Diff line number Diff line change
Expand Up @@ -160,100 +160,188 @@
"windows/**.md": "windows-development"
},
"ms.update-cycle": {
"assembler/**/**.{md,yml}": "3650-days",
"attributes/**/**.{md,yml}": "3650-days",
"atl/**/**.{md,yml}": "3650-days",
"atl-mfc-shared/**/**.{md,yml}": "3650-days",
"build/**/**.{md,yml}": "1825-days",
"c-language/**/**.{md,yml}": "3650-days",
"c-runtime-library/**/**.{md,yml}": "3650-days",
"assembler/**.md": "3650-days",
"assembler/**.yml": "3650-days",
"attributes/**.md": "3650-days",
"attributes/**.yml": "3650-days",
"atl/**.md": "3650-days",
"atl/**.yml": "3650-days",
"atl-mfc-shared/**.md": "3650-days",
"atl-mfc-shared/**.yml": "3650-days",
"build/**.md": "1825-days",
"build/**.yml": "1825-days",
"c-language/**.md": "3650-days",
"c-language/**.yml": "3650-days",
"c-runtime-library/**.md": "3650-days",
"c-runtime-library/**.yml": "3650-days",
"cpp/**.md": "1095-days",
"cppcx/**/**.{md,yml}": "3650-days",
"cross-platform/**/**.{md,yml}": "1825-days",
"data/**/**.{md,yml}": "3650-days",
"dotnet/**/**.{md,yml}": "3650-days",
"embedded/**/**.{md,yml}": "3650-days",
"error-messages/**/**.{md,yml}": "3650-days",
"extensions/**/**.{md,yml}": "3650-days",
"intrinsics/**/**.{md,yml}": "3650-days",
"mfc/**/**.{md,yml}": "3650-days",
"parallel/**/**.{md,yml}": "3650-days",
"porting/**/**.{md,yml}": "1095-days",
"preprocessor/**/**.{md,yml}": "3650-days",
"safeint/**/**.{md,yml}": "3650-days",
"standard-library/**/**.{md,yml}": "3650-days",
"text/**/**.{md,yml}": "3650-days",
"windows/**/**.{md,yml}": "1825-days"
"cpp/**.yml": "1095-days",
"cppcx/**.md": "3650-days",
"cppcx/**.yml": "3650-days",
"cross-platform/**.md": "1825-days",
"cross-platform/**.yml": "1825-days",
"data/**.md": "3650-days",
"data/**.yml": "3650-days",
"dotnet/**.md": "3650-days",
"dotnet/**.yml": "3650-days",
"embedded/**.md": "3650-days",
"embedded/**.yml": "3650-days",
"error-messages/**.md": "3650-days",
"error-messages/**.yml": "3650-days",
"extensions/**.md": "3650-days",
"extensions/**.yml": "3650-days",
"intrinsics/**.md": "3650-days",
"intrinsics/**.yml": "3650-days",
"mfc/**.md": "3650-days",
"mfc/**.yml": "3650-days",
"parallel/**.md": "3650-days",
"parallel/**.yml": "3650-days",
"porting/**.md": "1095-days",
"porting/**.yml": "1095-days",
"preprocessor/**.md": "3650-days",
"preprocessor/**.yml": "3650-days",
"safeint/**.md": "3650-days",
"safeint/**.yml": "3650-days",
"standard-library/**.md": "3650-days",
"standard-library/**.yml": "3650-days",
"text/**.md": "3650-days",
"text/**.yml": "3650-days",
"windows/**.md": "1825-days",
"windows/**.yml": "1825-days"
},
"author": {
"index.md": "tylermsft",
"assembler/**/**.{md,yml}": "tylermsft",
"attributes/**/**.{md,yml}": "tylermsft",
"atl/**/**.{md,yml}": "tylermsft",
"atl-mfc-shared/**/**.{md,yml}": "tylermsft",
"build/**/**.{md,yml}": "tylermsft",
"build-insights/**/**.{md,yml}": "tylermsft",
"c-language/**/**.{md,yml}": "tylermsft",
"c-runtime-library/**/**.{md,yml}": "tylermsft",
"cloud/**/**.{md,yml}": "tylermsft",
"code-quality/**/**.{md,yml}": "tylermsft",
"cpp/**/**.{md,yml}": "tylermsft",
"cppcx/**/**.{md,yml}": "tylermsft",
"cross-platform/**/**.{md,yml}": "tylermsft",
"data/**/**.{md,yml}": "tylermsft",
"dotnet/**/**.{md,yml}": "tylermsft",
"error-messages/**/**.{md,yml}": "tylermsft",
"extensions/**/**.{md,yml}": "tylermsft",
"get-started/**/**.{md,yml}": "tylermsft",
"ide/**/**.{md,yml}": "tylermsft",
"intrinsics/**/**.{md,yml}": "tylermsft",
"linux/**/**.{md,yml}": "tylermsft",
"mfc/**/**.{md,yml}": "tylermsft",
"overview/**/**.{md,yml}": "tylermsft",
"parallel/**/**.{md,yml}": "tylermsft",
"porting/**/**.{md,yml}": "tylermsft",
"preprocessor/**/**.{md,yml}": "tylermsft",
"safeint/**/**.{md,yml}": "tylermsft",
"sanitizers/**/**.{md,yml}": "tylermsft",
"security/**/**.{md,yml}": "tylermsft",
"standard-library/**/**.{md,yml}": "tylermsft",
"text/**/**.{md,yml}": "tylermsft",
"windows/**/**.{md,yml}": "tylermsft"
"index.md": "TylerMSFT",
"assembler/**.md": "TylerMSFT",
"assembler/**.yml": "TylerMSFT",
"attributes/**.md": "TylerMSFT",
"attributes/**.yml": "TylerMSFT",
"atl/**.md": "TylerMSFT",
"atl/**.yml": "TylerMSFT",
"atl-mfc-shared/**.md": "TylerMSFT",
"atl-mfc-shared/**.yml": "TylerMSFT",
"build/**.md": "TylerMSFT",
"build/**.yml": "TylerMSFT",
"build-insights/**.md": "TylerMSFT",
"build-insights/**.yml": "TylerMSFT",
"c-language/**.md": "TylerMSFT",
"c-language/**.yml": "TylerMSFT",
"c-runtime-library/**.md": "TylerMSFT",
"c-runtime-library/**.yml": "TylerMSFT",
"cloud/**.md": "TylerMSFT",
"cloud/**.yml": "TylerMSFT",
"code-quality/**.md": "TylerMSFT",
"code-quality/**.yml": "TylerMSFT",
"cpp/**.md": "TylerMSFT",
"cpp/**.yml": "TylerMSFT",
"cppcx/**.md": "TylerMSFT",
"cppcx/**.yml": "TylerMSFT",
"cross-platform/**.md": "TylerMSFT",
"cross-platform/**.yml": "TylerMSFT",
"data/**.md": "TylerMSFT",
"data/**.yml": "TylerMSFT",
"dotnet/**.md": "TylerMSFT",
"dotnet/**.yml": "TylerMSFT",
"error-messages/**.md": "TylerMSFT",
"error-messages/**.yml": "TylerMSFT",
"extensions/**.md": "TylerMSFT",
"extensions/**.yml": "TylerMSFT",
"get-started/**.md": "TylerMSFT",
"get-started/**.yml": "TylerMSFT",
"ide/**.md": "TylerMSFT",
"ide/**.yml": "TylerMSFT",
"intrinsics/**.md": "TylerMSFT",
"intrinsics/**.yml": "TylerMSFT",
"linux/**.md": "TylerMSFT",
"linux/**.yml": "TylerMSFT",
"mfc/**.md": "TylerMSFT",
"mfc/**.yml": "TylerMSFT",
"overview/**.md": "TylerMSFT",
"overview/**.yml": "TylerMSFT",
"parallel/**.md": "TylerMSFT",
"parallel/**.yml": "TylerMSFT",
"porting/**.md": "TylerMSFT",
"porting/**.yml": "TylerMSFT",
"preprocessor/**.md": "TylerMSFT",
"preprocessor/**.yml": "TylerMSFT",
"safeint/**.md": "TylerMSFT",
"safeint/**.yml": "TylerMSFT",
"sanitizers/**.md": "TylerMSFT",
"sanitizers/**.yml": "TylerMSFT",
"security/**.md": "TylerMSFT",
"security/**.yml": "TylerMSFT",
"standard-library/**.md": "TylerMSFT",
"standard-library/**.yml": "TylerMSFT",
"text/**.md": "TylerMSFT",
"text/**.yml": "TylerMSFT",
"windows/**.md": "TylerMSFT",
"windows/**.yml": "TylerMSFT"
},
"ms.author": {
"index.md": "twhitney",
"assembler/**/**.{md,yml}": "twhitney",
"atl/**/**.{md,yml}": "twhitney",
"atl-mfc-shared/**/**.{md,yml}": "twhitney",
"attributes/**/**.{md,yml}": "twhitney",
"build/**/**.{md,yml}": "twhitney",
"build-insights/**/**.{md,yml}": "twhitney",
"c-language/**/**.{md,yml}": "twhitney",
"c-runtime-library/**/**.{md,yml}": "twhitney",
"cloud/**/**.{md,yml}": "twhitney",
"code-quality/**/**.{md,yml}": "twhitney",
"cpp/**/**.{md,yml}": "twhitney",
"cppcx/**/**.{md,yml}": "twhitney",
"cross-platform/**/**.{md,yml}": "twhitney",
"data/**/**.{md,yml}": "twhitney",
"dotnet/**/**.{md,yml}": "twhitney",
"error-messages/**/**.{md,yml}": "twhitney",
"extensions/**/**.{md,yml}": "twhitney",
"get-started/**/**.{md,yml}": "twhitney",
"ide/**/**.{md,yml}": "twhitney",
"intrinsics/**/**.{md,yml}": "twhitney",
"linux/**/**.{md,yml}": "twhitney",
"mfc/**/**.{md,yml}": "twhitney",
"overview/**/**.{md,yml}": "twhitney",
"parallel/**/**.{md,yml}": "twhitney",
"porting/**/**.{md,yml}": "twhitney",
"preprocessor/**/**.{md,yml}": "twhitney",
"safeint/**/**.{md,yml}": "twhitney",
"sanitizers/**/**.{md,yml}": "twhitney",
"security/**/**.{md,yml}": "twhitney",
"standard-library/**/**.{md,yml}": "twhitney",
"text/**/**.{md,yml}": "twhitney",
"windows/**/**.{md,yml}": "twhitney"
"assembler/**.md": "twhitney",
"assembler/**.yml": "twhitney",
"atl/**.md": "twhitney",
"atl/**.yml": "twhitney",
"atl-mfc-shared/**.md": "twhitney",
"atl-mfc-shared/**.yml": "twhitney",
"attributes/**.md": "twhitney",
"attributes/**.yml": "twhitney",
"build/**.md": "twhitney",
"build/**.yml": "twhitney",
"build-insights/**.md": "twhitney",
"build-insights/**.yml": "twhitney",
"c-language/**.md": "twhitney",
"c-language/**.yml": "twhitney",
"c-runtime-library/**.md": "twhitney",
"c-runtime-library/**.yml": "twhitney",
"cloud/**.md": "twhitney",
"cloud/**.yml": "twhitney",
"code-quality/**.md": "twhitney",
"code-quality/**.yml": "twhitney",
"cpp/**.md": "twhitney",
"cpp/**.yml": "twhitney",
"cppcx/**.md": "twhitney",
"cppcx/**.yml": "twhitney",
"cross-platform/**.md": "twhitney",
"cross-platform/**.yml": "twhitney",
"data/**.md": "twhitney",
"data/**.yml": "twhitney",
"dotnet/**.md": "twhitney",
"dotnet/**.yml": "twhitney",
"error-messages/**.md": "twhitney",
"error-messages/**.yml": "twhitney",
"extensions/**.md": "twhitney",
"extensions/**.yml": "twhitney",
"get-started/**.md": "twhitney",
"get-started/**.yml": "twhitney",
"ide/**.md": "twhitney",
"ide/**.yml": "twhitney",
"intrinsics/**.md": "twhitney",
"intrinsics/**.yml": "twhitney",
"linux/**.md": "twhitney",
"linux/**.yml": "twhitney",
"mfc/**.md": "twhitney",
"mfc/**.yml": "twhitney",
"overview/**.md": "twhitney",
"overview/**.yml": "twhitney",
"parallel/**.md": "twhitney",
"parallel/**.yml": "twhitney",
"porting/**.md": "twhitney",
"porting/**.yml": "twhitney",
"preprocessor/**.md": "twhitney",
"preprocessor/**.yml": "twhitney",
"safeint/**.md": "twhitney",
"safeint/**.yml": "twhitney",
"sanitizers/**.md": "twhitney",
"sanitizers/**.yml": "twhitney",
"security/**.md": "twhitney",
"security/**.yml": "twhitney",
"standard-library/**.md": "twhitney",
"standard-library/**.yml": "twhitney",
"text/**.md": "twhitney",
"text/**.yml": "twhitney",
"windows/**.md": "twhitney",
"windows/**.yml": "twhitney"
}
},
"template": [],
Expand Down