diff --git a/conf/distro/include/tcmode-external-sourcery.inc b/conf/distro/include/tcmode-external-sourcery.inc index e761251..5102366 100644 --- a/conf/distro/include/tcmode-external-sourcery.inc +++ b/conf/distro/include/tcmode-external-sourcery.inc @@ -158,15 +158,24 @@ def populate_toolchain_links(d): bindir = d.getVar('STAGING_BINDIR_TOOLCHAIN', True) bb.utils.mkdirhier(bindir) + wrapped = ['gcc', 'g++', 'cpp'] for f in files: base = os.path.basename(f) newpath = os.path.join(bindir, base) - try: - os.symlink(f, newpath) - except OSError as exc: - if exc.errno == errno.EEXIST: - break - bb.fatal("Unable to populate toolchain binary symlink for %s: %s" % (newpath, exc)) + if not os.path.exists(newpath): + if any(base.endswith(w) for w in wrapped): + with open(newpath, 'w') as new: + new.write('#!/bin/sh\n') + new.write('export PSEUDO_UNLOAD=1\n') + new.write('exec {0} "$@"\n'.format(f)) + os.chmod(newpath, 0755) + else: + try: + os.symlink(f, newpath) + except OSError as exc: + if exc.errno == errno.EEXIST: + break + bb.fatal("Unable to populate toolchain binary symlink for %s: %s" % (newpath, exc)) # Ensure that we have a ld.bfd available, now that KERNEL_LD uses it ld = d.expand('${TARGET_PREFIX}ld')