reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
import re
import subprocess

def is_gold_v1_16_linker_available():

  if not config.gold_executable:
    return False
  try:
    ld_cmd = subprocess.Popen([config.gold_executable, '-v'],
                              stdout = subprocess.PIPE,
                              stderr = subprocess.PIPE)
    ld_out, _ = ld_cmd.communicate()
    ld_out = ld_out.decode()
  except:
    return False

  match = re.search(r'GNU gold \(.*\) (\d+)\.(\d+)', ld_out)
  if not match:
    return False
  major = int(match.group(1))
  minor = int(match.group(2))
  if major < 1 or (major == 1 and minor < 16):
    return False

  return True

if not is_gold_v1_16_linker_available():
  config.unsupported = True