summaryrefslogtreecommitdiff
path: root/payloads/libpayload/bin/lpgcc
diff options
context:
space:
mode:
authorJakub Czapiga <jacz@semihalf.com>2021-09-15 14:52:45 +0200
committerFelix Held <felix-coreboot@felixheld.de>2021-10-11 12:59:57 +0000
commit3d91b47b425ffb880c0ed6c45fd04ba48d95ca8d (patch)
tree828ac9be4df77c66c9f06435f560e5124db0f9f9 /payloads/libpayload/bin/lpgcc
parentb40fdbaa648639c2922732e2fa137c3ebcc78e4e (diff)
libpayload: Add mock architecture
Mock architecture can be used to build libpayload using host compiler. It can be enabled by setting ARCH_MOCK=y in the dotconfig. It sets LITTLE_ENDIAN=y, as most machines these days use little-endian CPUs. Libpayload will use HOSTCC as CC, HOSTLD as LD, etc. instead of tools provided by xcompile. Mock architecture configuration can be used by payloads for testing purposes. Thanks to it, tests can be architecture-independent, and can be executed without requiring compatible Kconfig options, e.g. ARCH_ARM64=y for ARM64 machine. However, one has to provide implementation for most architecture-specific functions present in arch/* directories. Signed-off-by: Jakub Czapiga <jacz@semihalf.com> Change-Id: Ie3a6e6f6cad2f8a2e48a8e546d3b79c577653080 Reviewed-on: https://review.coreboot.org/c/coreboot/+/57708 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'payloads/libpayload/bin/lpgcc')
-rwxr-xr-xpayloads/libpayload/bin/lpgcc13
1 files changed, 12 insertions, 1 deletions
diff --git a/payloads/libpayload/bin/lpgcc b/payloads/libpayload/bin/lpgcc
index c0fe56adf5..3a76f13d17 100755
--- a/payloads/libpayload/bin/lpgcc
+++ b/payloads/libpayload/bin/lpgcc
@@ -91,13 +91,24 @@ if [ "$CONFIG_LP_ARCH_X86" = "y" ]; then
_ARCHEXTRA="-m32 "
_ARCH=x86
fi
+if [ "$CONFIG_LP_ARCH_MOCK" = "y" ]; then
+ _ARCHINCDIR=$_INCDIR/mock
+ _ARCHLIBDIR=$_LIBDIR/mock
+ _ARCHEXTRA=""
+ _ARCH=mock
+fi
if [ -f $_LIBDIR/libpayload.ldscript ]; then
_LDDIR=$_LIBDIR
elif [ -f $BASE/../arch/$_ARCH/libpayload.ldscript ]; then
_LDDIR=$BASE/../arch/$_ARCH
fi
-_LDSCRIPT="-Wl,-T,$_LDDIR/libpayload.ldscript"
+# Host arch should youse default linker script
+if [ "$CONFIG_LP_ARCH_MOCK" = "y" ]; then
+ _LDSCRIPT=""
+else
+ _LDSCRIPT="-Wl,-T,$_LDDIR/libpayload.ldscript"
+fi
trygccoption() {
$DEFAULT_CC $1 -S -xc /dev/null -o /dev/null &> /dev/null