1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2024 The Chromium Authors 2*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file. 4*8975f5c5SAndroid Build Coastguard Worker 5*8975f5c5SAndroid Build Coastguard Workerimport("//build/toolchain/toolchain.gni") 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Worker# Embed elf section information of a binary into the binary's predefined 8*8975f5c5SAndroid Build Coastguard Worker# symbols. 9*8975f5c5SAndroid Build Coastguard Worker# 10*8975f5c5SAndroid Build Coastguard Worker# Args: 11*8975f5c5SAndroid Build Coastguard Worker# binary_input: Path to the chrome binary, e.g.: 12*8975f5c5SAndroid Build Coastguard Worker# "$root_out_dir/chrome" 13*8975f5c5SAndroid Build Coastguard Worker# sections_embedded_binary_output: Desired output file for embedded binary, 14*8975f5c5SAndroid Build Coastguard Worker# e.g.: "$root_out_dir/chrome.sections_embedded" 15*8975f5c5SAndroid Build Coastguard Workertemplate("embed_sections") { 16*8975f5c5SAndroid Build Coastguard Worker forward_variables_from(invoker, 17*8975f5c5SAndroid Build Coastguard Worker [ 18*8975f5c5SAndroid Build Coastguard Worker "deps", 19*8975f5c5SAndroid Build Coastguard Worker "testonly", 20*8975f5c5SAndroid Build Coastguard Worker ]) 21*8975f5c5SAndroid Build Coastguard Worker action("${target_name}") { 22*8975f5c5SAndroid Build Coastguard Worker script = "//build/chromeos/embed_sections.py" 23*8975f5c5SAndroid Build Coastguard Worker 24*8975f5c5SAndroid Build Coastguard Worker if (defined(invoker.sections_embedded_binary_output)) { 25*8975f5c5SAndroid Build Coastguard Worker sections_embedded_binary_output = invoker.sections_embedded_binary_output 26*8975f5c5SAndroid Build Coastguard Worker } else { 27*8975f5c5SAndroid Build Coastguard Worker sections_embedded_binary_output = 28*8975f5c5SAndroid Build Coastguard Worker invoker.binary_input + ".sections_embedded" 29*8975f5c5SAndroid Build Coastguard Worker } 30*8975f5c5SAndroid Build Coastguard Worker 31*8975f5c5SAndroid Build Coastguard Worker inputs = [ invoker.binary_input ] 32*8975f5c5SAndroid Build Coastguard Worker outputs = [ sections_embedded_binary_output ] 33*8975f5c5SAndroid Build Coastguard Worker args = [ 34*8975f5c5SAndroid Build Coastguard Worker "--binary-input", 35*8975f5c5SAndroid Build Coastguard Worker rebase_path(invoker.binary_input, root_build_dir), 36*8975f5c5SAndroid Build Coastguard Worker "--binary-output", 37*8975f5c5SAndroid Build Coastguard Worker rebase_path(sections_embedded_binary_output, root_build_dir), 38*8975f5c5SAndroid Build Coastguard Worker ] 39*8975f5c5SAndroid Build Coastguard Worker } 40*8975f5c5SAndroid Build Coastguard Worker} 41