If you want to use an Arm Linux target system and a different build system, the process is outlined below.
The Perf data is collected on the Arm target system.
Record samples while running your application. Substitute the actual name of your application for executable:
    
        
        
perf record -e cycles:u -o perf.data -- ./executable
    
Copy perf.data and executable to the build system using scp. You will need to replace BUILD-SYSTEM and /path/to/bolt/work-area with the build system hostname and work area path respectively for your setup.
    
        
        
scp perf.data BUILD-SYSTEM:/path/to/bolt/work-area
scp executable BUILD-SYSTEM:/path/to/bolt/work-area
    
On the build system, verify that perf.data and executable have been copied.
List the directory contents:
    
        
        
ls
    
You should see executable and perf.data in your directory.
    
        
        drwxrwxr-x  2 username username    4096 Nov 28 12:43 ./
drwxrwxr-x 14 username username    4096 Nov 28 11:09 ../
-rwxrwxr-x  1 username username   32712 Nov 28 11:10 executable*
-rw-------  1 username username  407112 Nov 28 11:10 perf.data
        
    
Run the command below to convert the profile data:
    
        
        
perf2bolt -p perf.data -o perf.fdata -nl ./executable
llvm-bolt ./executable -o ./new_executable -data perf.fdata -reorder-blocks=ext-tsp -reorder-functions=hfsort -split-functions -split-all-cold -split-eh -dyno-stats
    
This will generate the new executable. You will need to be copied back to the target system so it can be run.
This is run from the target system
Copy new_executable to the target system. You will need to replace BUILD-SYSTEM and /path/to/bolt/work-area/new_executable with the build system hostname and path to new_executable respectively.
    
        
        
scp BUILD-SYSTEM:/path/to/bolt/work-area/new_executable .
    
Verify that new_executable has been copied.
List the directory contents:
    
        
        
ls
    
You should see the new_executable in the current directory:
    
        
        drwxrwxr-x  2 username username    4096 Nov 28 12:43 ./
drwxrwxr-x 14 username username    4096 Nov 28 11:09 ../
-rwxrwxr-x  1 username username   32712 Nov 28 11:10 executable*
-rwxrwxr-x  1 username username 6304960 Nov 28 12:43 new_executable*
-rw-------  1 username username  407112 Nov 28 11:10 perf.data
        
    
Run the new executable
    
        
        
./new_executable
    
With a separate build and target system you can use SSH to copy files back and forth and work with BOLT.