fix: use system installed objcopy to copy debug symbols (#23835)
This commit is contained in:
parent
e8ea007104
commit
b086197968
3 changed files with 13 additions and 31 deletions
|
@ -5,7 +5,7 @@ import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from lib.config import LINUX_BINARIES, PLATFORM
|
from lib.config import LINUX_BINARIES, PLATFORM
|
||||||
from lib.util import execute, get_objcopy_path, get_out_dir
|
from lib.util import execute, get_out_dir
|
||||||
|
|
||||||
def add_debug_link_into_binaries(directory, target_cpu, debug_dir):
|
def add_debug_link_into_binaries(directory, target_cpu, debug_dir):
|
||||||
for binary in LINUX_BINARIES:
|
for binary in LINUX_BINARIES:
|
||||||
|
@ -14,18 +14,15 @@ def add_debug_link_into_binaries(directory, target_cpu, debug_dir):
|
||||||
add_debug_link_into_binary(binary_path, target_cpu, debug_dir)
|
add_debug_link_into_binary(binary_path, target_cpu, debug_dir)
|
||||||
|
|
||||||
def add_debug_link_into_binary(binary_path, target_cpu, debug_dir):
|
def add_debug_link_into_binary(binary_path, target_cpu, debug_dir):
|
||||||
try:
|
if PLATFORM == 'linux' and (target_cpu == 'x86' or target_cpu == 'arm' or
|
||||||
objcopy = get_objcopy_path(target_cpu)
|
target_cpu == 'arm64'):
|
||||||
except:
|
# Skip because no objcopy binary on the given target.
|
||||||
if PLATFORM == 'linux' and (target_cpu == 'x86' or target_cpu == 'arm' or
|
return
|
||||||
target_cpu == 'arm64'):
|
|
||||||
# Skip because no objcopy binary on the given target.
|
|
||||||
return
|
|
||||||
raise
|
|
||||||
debug_name = get_debug_name(binary_path)
|
debug_name = get_debug_name(binary_path)
|
||||||
# Make sure the path to the binary is not relative because of cwd param.
|
# Make sure the path to the binary is not relative because of cwd param.
|
||||||
real_binary_path = os.path.realpath(binary_path)
|
real_binary_path = os.path.realpath(binary_path)
|
||||||
cmd = [objcopy, '--add-gnu-debuglink=' + debug_name, real_binary_path]
|
cmd = ['objcopy', '--add-gnu-debuglink=' + debug_name, real_binary_path]
|
||||||
execute(cmd, cwd=debug_dir)
|
execute(cmd, cwd=debug_dir)
|
||||||
|
|
||||||
def get_debug_name(binary_path):
|
def get_debug_name(binary_path):
|
||||||
|
|
|
@ -5,7 +5,7 @@ import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from lib.config import LINUX_BINARIES, PLATFORM
|
from lib.config import LINUX_BINARIES, PLATFORM
|
||||||
from lib.util import execute, get_objcopy_path, get_out_dir, safe_mkdir
|
from lib.util import execute, get_out_dir, safe_mkdir
|
||||||
|
|
||||||
# It has to be done before stripping the binaries.
|
# It has to be done before stripping the binaries.
|
||||||
def copy_debug_from_binaries(directory, out_dir, target_cpu, compress):
|
def copy_debug_from_binaries(directory, out_dir, target_cpu, compress):
|
||||||
|
@ -15,16 +15,12 @@ def copy_debug_from_binaries(directory, out_dir, target_cpu, compress):
|
||||||
copy_debug_from_binary(binary_path, out_dir, target_cpu, compress)
|
copy_debug_from_binary(binary_path, out_dir, target_cpu, compress)
|
||||||
|
|
||||||
def copy_debug_from_binary(binary_path, out_dir, target_cpu, compress):
|
def copy_debug_from_binary(binary_path, out_dir, target_cpu, compress):
|
||||||
try:
|
if PLATFORM == 'linux' and (target_cpu == 'x86' or target_cpu == 'arm' or
|
||||||
objcopy = get_objcopy_path(target_cpu)
|
target_cpu == 'arm64'):
|
||||||
except:
|
# Skip because no objcopy binary on the given target.
|
||||||
if PLATFORM == 'linux' and (target_cpu == 'x86' or target_cpu == 'arm' or
|
return
|
||||||
target_cpu == 'arm64'):
|
|
||||||
# Skip because no objcopy binary on the given target.
|
|
||||||
return
|
|
||||||
raise
|
|
||||||
debug_name = get_debug_name(binary_path)
|
debug_name = get_debug_name(binary_path)
|
||||||
cmd = [objcopy, '--only-keep-debug']
|
cmd = ['objcopy', '--only-keep-debug']
|
||||||
if compress:
|
if compress:
|
||||||
cmd.extend(['--compress-debug-sections'])
|
cmd.extend(['--compress-debug-sections'])
|
||||||
cmd.extend([binary_path, os.path.join(out_dir, debug_name)])
|
cmd.extend([binary_path, os.path.join(out_dir, debug_name)])
|
||||||
|
|
|
@ -268,14 +268,3 @@ def get_buildtools_executable(name):
|
||||||
if sys.platform == 'win32':
|
if sys.platform == 'win32':
|
||||||
path += '.exe'
|
path += '.exe'
|
||||||
return path
|
return path
|
||||||
|
|
||||||
def get_objcopy_path(target_cpu):
|
|
||||||
if PLATFORM != 'linux':
|
|
||||||
raise Exception(
|
|
||||||
"get_objcopy_path: unexpected platform '{0}'".format(PLATFORM))
|
|
||||||
|
|
||||||
if target_cpu != 'x64':
|
|
||||||
raise Exception(
|
|
||||||
"get_objcopy_path: unexpected target cpu '{0}'".format(target_cpu))
|
|
||||||
return os.path.join(SRC_DIR, 'third_party', 'binutils', 'Linux_x64',
|
|
||||||
'Release', 'bin', 'objcopy')
|
|
||||||
|
|
Loading…
Reference in a new issue