# Clang 14 documentation

## Clang Linker Wrapper

## Introduction

This tool works as a wrapper over a linking job. The tool is used to create linked device images for offloading. It scans the linker’s input for embedded device offloading data stored in sections `.llvm.offloading.<triple>.<arch>` and extracts it as a temporary file. The extracted device files will then be passed to a device linking job to create a final device image.

## Usage

This tool can be used with the following options. Arguments to the host linker being wrapper around are passed as positional arguments using the `--` flag to override parsing.

    USAGE: clang-linker-wrapper [options] <options to be passed to linker>...

    OPTIONS:

    Generic Options:

      --help                    - Display available options (--help-hidden for more)
      --help-list               - Display list of available options (--help-list-hidden for more)
      --version                 - Display the version of this program

    clang-linker-wrapper options:

      --host-triple=<string>    - Triple to use for the host compilation
      --linker-path=<string>    - Path of linker binary
      --opt-level=<string>      - Optimization level for LTO
      --ptxas-option=<string>   - Argument to pass to the ptxas invocation
      --save-temps              - Save intermediary results.
      --strip-sections          - Strip offloading sections from the host object file.
      --target-embed-bc         - Embed linked bitcode instead of an executable device image
      --target-feature=<string> - Target features for triple
      --target-library=<string> - Path for the target bitcode library
      -v                        - Verbose output from tools

## Example

This tool links object files with offloading images embedded within it using the `-fembed-offload-object` flag in Clang. Given an input file containing the magic section we can pass it to this tool to extract the data contained at that section and run a device linking job on it.

    clang-linker-wrapper -host-triple x86_64-unknown-linux-gnu -linker-path /usr/bin/ld -- <Args>