summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Markgraf <steve@steve-m.de>2013-12-29 20:33:26 +0100
committerVadim Yanitskiy <axilirator@gmail.com>2020-02-21 04:54:47 +0700
commit8472937a2efc9f7243cf71c095510a6f6d779bb0 (patch)
tree46f5c06ea5e89e4bf6fa97ea43a829d9cd8584a2
parent9516a0e55f0c1d4a2f3bd875e97f460d7cb8d71a (diff)
fw: tell linker to add init_array to ctor section
Starting with version 4.8, gcc places functions with __attribute__ ((constructor)) in .init_array instead of .ctors by default. This broke firmware images built with gcc >= 4.8. Signed-off-by: Steve Markgraf <steve@steve-m.de>
-rw-r--r--src/target/firmware/board/compal/highram.lds1
-rw-r--r--src/target/firmware/board/compal/ram.lds1
-rw-r--r--src/target/firmware/board/compal_e88/flash.lds1
-rw-r--r--src/target/firmware/board/compal_e88/loader.lds1
-rw-r--r--src/target/firmware/board/mediatek/ram.lds1
5 files changed, 5 insertions, 0 deletions
diff --git a/src/target/firmware/board/compal/highram.lds b/src/target/firmware/board/compal/highram.lds
index 482c4c24..9309d83f 100644
--- a/src/target/firmware/board/compal/highram.lds
+++ b/src/target/firmware/board/compal/highram.lds
@@ -59,6 +59,7 @@ SECTIONS
LONG(SIZEOF(.ctors) / 4 - 2)
/* ctor pointers */
KEEP(*(SORT(.ctors)))
+ KEEP(*(SORT(.init_array)))
/* end of list */
LONG(0)
} > RAM
diff --git a/src/target/firmware/board/compal/ram.lds b/src/target/firmware/board/compal/ram.lds
index 4d3a1e40..b52b619a 100644
--- a/src/target/firmware/board/compal/ram.lds
+++ b/src/target/firmware/board/compal/ram.lds
@@ -62,6 +62,7 @@ SECTIONS
LONG(SIZEOF(.ctors) / 4 - 2)
/* ctor pointers */
KEEP(*(SORT(.ctors)))
+ KEEP(*(SORT(.init_array)))
/* end of list */
LONG(0)
} > LRAM
diff --git a/src/target/firmware/board/compal_e88/flash.lds b/src/target/firmware/board/compal_e88/flash.lds
index cf0f6a41..67d727ff 100644
--- a/src/target/firmware/board/compal_e88/flash.lds
+++ b/src/target/firmware/board/compal_e88/flash.lds
@@ -54,6 +54,7 @@ SECTIONS
LONG(SIZEOF(.ctors) / 4 - 2)
/* ctor pointers */
KEEP(*(SORT(.ctors)))
+ KEEP(*(SORT(.init_array)))
/* end of list */
LONG(0)
} > FLASH
diff --git a/src/target/firmware/board/compal_e88/loader.lds b/src/target/firmware/board/compal_e88/loader.lds
index a7a001fc..22febff4 100644
--- a/src/target/firmware/board/compal_e88/loader.lds
+++ b/src/target/firmware/board/compal_e88/loader.lds
@@ -67,6 +67,7 @@ SECTIONS
LONG(SIZEOF(.ctors) / 4 - 2)
/* ctor pointers */
KEEP(*(SORT(.ctors)))
+ KEEP(*(SORT(.init_array)))
/* end of list */
LONG(0)
} > FLASH
diff --git a/src/target/firmware/board/mediatek/ram.lds b/src/target/firmware/board/mediatek/ram.lds
index a2af5609..7083c273 100644
--- a/src/target/firmware/board/mediatek/ram.lds
+++ b/src/target/firmware/board/mediatek/ram.lds
@@ -51,6 +51,7 @@ SECTIONS
LONG(SIZEOF(.ctors) / 4 - 2)
/* ctor pointers */
KEEP(*(SORT(.ctors)))
+ KEEP(*(SORT(.init_array)))
/* end of list */
LONG(0)
} > LRAM