summaryrefslogtreecommitdiffstats
path: root/include/u-boot
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2009-08-23 02:47:59 -0400
committerWolfgang Denk <wd@denx.de>2009-08-23 22:33:33 +0200
commit6ac9f47977a9fc1876979871eeb14f26ba1bdbe6 (patch)
tree49a04782109977087bb9adfea3feac51e073821e /include/u-boot
parent2ed0869d30602eb660569eababb8fedff36bd23a (diff)
downloadblackbird-obmc-uboot-6ac9f47977a9fc1876979871eeb14f26ba1bdbe6.tar.gz
blackbird-obmc-uboot-6ac9f47977a9fc1876979871eeb14f26ba1bdbe6.zip
start a linker script helper file
Start a common header file for common linker script code (such as workarounds for older linkers) rather than doing this in the build system. As fallout, we no longer execute the linker every time config.mk is included by a build file (which can easily be 70+ times), but rather only execute it once. This also fixes a bug in the major version checking by creating a macro to easily compare versions and keep people from making the same common mistake (forgetting to check major and minor together). Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'include/u-boot')
-rw-r--r--include/u-boot/u-boot.lds.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/include/u-boot/u-boot.lds.h b/include/u-boot/u-boot.lds.h
new file mode 100644
index 0000000000..ead37d069b
--- /dev/null
+++ b/include/u-boot/u-boot.lds.h
@@ -0,0 +1,25 @@
+/*
+ * Linker script helper macros
+ *
+ * Copyright (c) 2009 Analog Devices Inc.
+ *
+ * Licensed under the GPL-2 or later.
+ */
+
+#ifndef __U_BOOT_LDS__
+#define __U_BOOT_LDS__
+
+/* See if the linker version is at least the specified version */
+#define LD_AT_LEAST(major, minor) \
+ ((major > LD_MAJOR) || (major == LD_MAJOR && minor <= LD_MINOR))
+
+/*
+ * Linker versions prior to 2.16 don't understand the builtin
+ * functions SORT_BY_ALIGNMENT() and SORT_BY_NAME(), so disable these
+ */
+#if !LD_AT_LEAST(2, 16)
+# define SORT_BY_ALIGNMENT(x) x
+# define SORT_BY_NAME(x) x
+#endif
+
+#endif
OpenPOWER on IntegriCloud