From 2bbacf89fea9f5613fd884b57809070da5b8c925 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Tue, 29 Apr 2008 06:19:32 +0000 Subject: Make sure the linker considers crt0*.o before all files specified on the command line by using STARTUP() instead of INPUT() in the .lds. Using INPUT() makes the linker process crt0*.o after all files specified on the command line, making linking fail if there are librockbox.a members which are only referenced by crt0*.o. Remove the hackaround that was needed for building the gigabeat S bootloader before (aka UIE() problem). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17289 a1c6a512-1295-4272-9138-f99709370657 --- bootloader/gigabeat-s.c | 7 ------- firmware/rom.lds | 10 +++++----- firmware/system.c | 6 ------ firmware/target/arm/imx31/app.lds | 2 +- firmware/target/arm/imx31/boot.lds | 2 +- firmware/target/arm/ipod/app.lds | 2 +- firmware/target/arm/ipod/boot.lds | 2 +- firmware/target/arm/iriver/app.lds | 2 +- firmware/target/arm/iriver/boot.lds | 2 +- firmware/target/arm/olympus/app.lds | 2 +- firmware/target/arm/olympus/boot.lds | 2 +- firmware/target/arm/pnx0101/app.lds | 2 +- firmware/target/arm/s3c2440/app.lds | 2 +- firmware/target/arm/s3c2440/boot.lds | 2 +- firmware/target/arm/sandisk/app.lds | 2 +- firmware/target/arm/sandisk/boot.lds | 2 +- firmware/target/arm/tcc77x/boot.lds | 2 +- firmware/target/arm/tcc780x/app.lds | 2 +- firmware/target/arm/tcc780x/boot.lds | 2 +- firmware/target/arm/tms320dm320/app.lds | 2 +- firmware/target/arm/tms320dm320/boot.lds | 2 +- firmware/target/coldfire/iaudio/app.lds | 2 +- firmware/target/coldfire/iaudio/boot.lds | 2 +- firmware/target/coldfire/iriver/app.lds | 2 +- firmware/target/coldfire/iriver/boot.lds | 2 +- firmware/target/sh/archos/app.lds | 2 +- firmware/target/sh/archos/boot.lds | 2 +- 27 files changed, 29 insertions(+), 42 deletions(-) diff --git a/bootloader/gigabeat-s.c b/bootloader/gigabeat-s.c index 7fb8608c79..439c81edfb 100644 --- a/bootloader/gigabeat-s.c +++ b/bootloader/gigabeat-s.c @@ -58,13 +58,6 @@ char *tarbuf = (char *)0x00000040; extern void reference_system_c(void); static struct event_queue usb_wait_queue; -/* Dummy stub that creates C references for C functions only used by - assembly - never called */ -void reference_files(void) -{ - reference_system_c(); -} - void show_splash(int timeout, const char *msg) { lcd_putsxy( (LCD_WIDTH - (SYSFONT_WIDTH * strlen(msg))) / 2, diff --git a/firmware/rom.lds b/firmware/rom.lds index 723977295a..a56beea915 100644 --- a/firmware/rom.lds +++ b/firmware/rom.lds @@ -4,19 +4,19 @@ ENTRY(start) #ifdef CPU_COLDFIRE OUTPUT_FORMAT(elf32-m68k) -INPUT(target/coldfire/crt0.o) +STARTUP(target/coldfire/crt0.o) #elif defined(CPU_PP) OUTPUT_FORMAT(elf32-littlearm) -INPUT(target/arm/crt0-pp.o) +STARTUP(target/arm/crt0-pp.o) #elif defined(CPU_ARM) OUTPUT_FORMAT(elf32-littlearm) -INPUT(target/arm/crt0.o) +STARTUP(target/arm/crt0.o) #elif CONFIG_CPU == SH7034 OUTPUT_FORMAT(elf32-sh) -INPUT(target/sh/crt0.o) +STARTUP(target/sh/crt0.o) #else OUTPUT_FORMAT(elf32-sh) -INPUT(crt0.o) +STARTUP(crt0.o) #endif diff --git a/firmware/system.c b/firmware/system.c index 15eb77eada..7163468cf6 100644 --- a/firmware/system.c +++ b/firmware/system.c @@ -273,11 +273,5 @@ void __div0(void) } #endif -#ifdef BOOTLOADER -void reference_system_c(void) -{ -} -#endif - #endif /* CPU_ARM */ diff --git a/firmware/target/arm/imx31/app.lds b/firmware/target/arm/imx31/app.lds index 3725daca04..9b35e8dd53 100644 --- a/firmware/target/arm/imx31/app.lds +++ b/firmware/target/arm/imx31/app.lds @@ -4,7 +4,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/imx31/crt0.o) +STARTUP(target/arm/imx31/crt0.o) #define PLUGINSIZE PLUGIN_BUFFER_SIZE #define CODECSIZE CODEC_SIZE diff --git a/firmware/target/arm/imx31/boot.lds b/firmware/target/arm/imx31/boot.lds index b881624880..d8bb2fc3d1 100644 --- a/firmware/target/arm/imx31/boot.lds +++ b/firmware/target/arm/imx31/boot.lds @@ -4,7 +4,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/imx31/crt0.o) +STARTUP(target/arm/imx31/crt0.o) #define DRAMSIZE (1 << 20) /* Limit 1 MB for bootloader */ diff --git a/firmware/target/arm/ipod/app.lds b/firmware/target/arm/ipod/app.lds index ccd23eb31b..d7159e8e1e 100644 --- a/firmware/target/arm/ipod/app.lds +++ b/firmware/target/arm/ipod/app.lds @@ -4,7 +4,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/crt0-pp.o) +STARTUP(target/arm/crt0-pp.o) #define PLUGINSIZE PLUGIN_BUFFER_SIZE #define CODECSIZE CODEC_SIZE diff --git a/firmware/target/arm/ipod/boot.lds b/firmware/target/arm/ipod/boot.lds index 1f9c65d31c..5c80f1fbc3 100644 --- a/firmware/target/arm/ipod/boot.lds +++ b/firmware/target/arm/ipod/boot.lds @@ -3,7 +3,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/crt0-pp-bl.o) +STARTUP(target/arm/crt0-pp-bl.o) #define DRAMSIZE (MEMORYSIZE * 0x100000) diff --git a/firmware/target/arm/iriver/app.lds b/firmware/target/arm/iriver/app.lds index ccd23eb31b..d7159e8e1e 100644 --- a/firmware/target/arm/iriver/app.lds +++ b/firmware/target/arm/iriver/app.lds @@ -4,7 +4,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/crt0-pp.o) +STARTUP(target/arm/crt0-pp.o) #define PLUGINSIZE PLUGIN_BUFFER_SIZE #define CODECSIZE CODEC_SIZE diff --git a/firmware/target/arm/iriver/boot.lds b/firmware/target/arm/iriver/boot.lds index 971ec6627b..77e661f608 100644 --- a/firmware/target/arm/iriver/boot.lds +++ b/firmware/target/arm/iriver/boot.lds @@ -3,7 +3,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/crt0-pp-bl.o) +STARTUP(target/arm/crt0-pp-bl.o) #define DRAMSIZE (MEMORYSIZE * 0x100000) diff --git a/firmware/target/arm/olympus/app.lds b/firmware/target/arm/olympus/app.lds index ccd23eb31b..d7159e8e1e 100644 --- a/firmware/target/arm/olympus/app.lds +++ b/firmware/target/arm/olympus/app.lds @@ -4,7 +4,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/crt0-pp.o) +STARTUP(target/arm/crt0-pp.o) #define PLUGINSIZE PLUGIN_BUFFER_SIZE #define CODECSIZE CODEC_SIZE diff --git a/firmware/target/arm/olympus/boot.lds b/firmware/target/arm/olympus/boot.lds index 2c0245072c..7b86ad29bc 100644 --- a/firmware/target/arm/olympus/boot.lds +++ b/firmware/target/arm/olympus/boot.lds @@ -3,7 +3,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/crt0-pp-bl.o) +STARTUP(target/arm/crt0-pp-bl.o) #define DRAMSIZE (MEMORYSIZE * 0x100000) diff --git a/firmware/target/arm/pnx0101/app.lds b/firmware/target/arm/pnx0101/app.lds index 20c8bd26a2..6464b0d608 100644 --- a/firmware/target/arm/pnx0101/app.lds +++ b/firmware/target/arm/pnx0101/app.lds @@ -4,7 +4,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/pnx0101/crt0-pnx0101.o) +STARTUP(target/arm/pnx0101/crt0-pnx0101.o) #define PLUGINSIZE PLUGIN_BUFFER_SIZE #define CODECSIZE CODEC_SIZE diff --git a/firmware/target/arm/s3c2440/app.lds b/firmware/target/arm/s3c2440/app.lds index e6efe62656..e999ef0760 100644 --- a/firmware/target/arm/s3c2440/app.lds +++ b/firmware/target/arm/s3c2440/app.lds @@ -4,7 +4,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/s3c2440/crt0.o) +STARTUP(target/arm/s3c2440/crt0.o) #define PLUGINSIZE PLUGIN_BUFFER_SIZE #define CODECSIZE CODEC_SIZE diff --git a/firmware/target/arm/s3c2440/boot.lds b/firmware/target/arm/s3c2440/boot.lds index 4516c7ddb0..3cb88c9e7b 100644 --- a/firmware/target/arm/s3c2440/boot.lds +++ b/firmware/target/arm/s3c2440/boot.lds @@ -3,7 +3,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/s3c2440/crt0.o) +STARTUP(target/arm/s3c2440/crt0.o) #define DRAMSIZE (MEMORYSIZE * 0x100000) diff --git a/firmware/target/arm/sandisk/app.lds b/firmware/target/arm/sandisk/app.lds index ccd23eb31b..d7159e8e1e 100644 --- a/firmware/target/arm/sandisk/app.lds +++ b/firmware/target/arm/sandisk/app.lds @@ -4,7 +4,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/crt0-pp.o) +STARTUP(target/arm/crt0-pp.o) #define PLUGINSIZE PLUGIN_BUFFER_SIZE #define CODECSIZE CODEC_SIZE diff --git a/firmware/target/arm/sandisk/boot.lds b/firmware/target/arm/sandisk/boot.lds index 1c1066895f..f829076b12 100644 --- a/firmware/target/arm/sandisk/boot.lds +++ b/firmware/target/arm/sandisk/boot.lds @@ -3,7 +3,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/crt0-pp-bl.o) +STARTUP(target/arm/crt0-pp-bl.o) #define DRAMSIZE (MEMORYSIZE * 0x100000) diff --git a/firmware/target/arm/tcc77x/boot.lds b/firmware/target/arm/tcc77x/boot.lds index aa4b05c5ae..21fc7db96a 100644 --- a/firmware/target/arm/tcc77x/boot.lds +++ b/firmware/target/arm/tcc77x/boot.lds @@ -3,7 +3,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/tcc77x/crt0.o) +STARTUP(target/arm/tcc77x/crt0.o) #define DRAMSIZE (MEMORYSIZE * 0x100000) diff --git a/firmware/target/arm/tcc780x/app.lds b/firmware/target/arm/tcc780x/app.lds index 069dd24b9c..97ae2c2e82 100644 --- a/firmware/target/arm/tcc780x/app.lds +++ b/firmware/target/arm/tcc780x/app.lds @@ -4,7 +4,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/tcc780x/crt0.o) +STARTUP(target/arm/tcc780x/crt0.o) #define PLUGINSIZE PLUGIN_BUFFER_SIZE #define CODECSIZE CODEC_SIZE diff --git a/firmware/target/arm/tcc780x/boot.lds b/firmware/target/arm/tcc780x/boot.lds index 657f31901a..ea4a562a35 100644 --- a/firmware/target/arm/tcc780x/boot.lds +++ b/firmware/target/arm/tcc780x/boot.lds @@ -3,7 +3,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/tcc780x/crt0.o) +STARTUP(target/arm/tcc780x/crt0.o) #define DRAMSIZE (MEMORYSIZE * 0x100000) diff --git a/firmware/target/arm/tms320dm320/app.lds b/firmware/target/arm/tms320dm320/app.lds index ce2750235b..64610a3577 100644 --- a/firmware/target/arm/tms320dm320/app.lds +++ b/firmware/target/arm/tms320dm320/app.lds @@ -4,7 +4,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/tms320dm320/crt0.o) +STARTUP(target/arm/tms320dm320/crt0.o) #define PLUGINSIZE PLUGIN_BUFFER_SIZE #define CODECSIZE CODEC_SIZE diff --git a/firmware/target/arm/tms320dm320/boot.lds b/firmware/target/arm/tms320dm320/boot.lds index 8fb40ae135..5a4182fe29 100644 --- a/firmware/target/arm/tms320dm320/boot.lds +++ b/firmware/target/arm/tms320dm320/boot.lds @@ -3,7 +3,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-littlearm) OUTPUT_ARCH(arm) -INPUT(target/arm/tms320dm320/crt0.o) +STARTUP(target/arm/tms320dm320/crt0.o) #define DRAMSIZE (MEMORYSIZE * 0x100000) diff --git a/firmware/target/coldfire/iaudio/app.lds b/firmware/target/coldfire/iaudio/app.lds index 63c462cf4a..d3ccce24f0 100644 --- a/firmware/target/coldfire/iaudio/app.lds +++ b/firmware/target/coldfire/iaudio/app.lds @@ -3,7 +3,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-m68k) -INPUT(target/coldfire/crt0.o) +STARTUP(target/coldfire/crt0.o) #define PLUGINSIZE PLUGIN_BUFFER_SIZE #define CODECSIZE CODEC_SIZE diff --git a/firmware/target/coldfire/iaudio/boot.lds b/firmware/target/coldfire/iaudio/boot.lds index 17b1457747..bf307ae994 100644 --- a/firmware/target/coldfire/iaudio/boot.lds +++ b/firmware/target/coldfire/iaudio/boot.lds @@ -2,7 +2,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-m68k) -INPUT(target/coldfire/crt0.o) +STARTUP(target/coldfire/crt0.o) #define DRAMSIZE (MEMORYSIZE * 0x100000) diff --git a/firmware/target/coldfire/iriver/app.lds b/firmware/target/coldfire/iriver/app.lds index 3e4c81fe51..ae21ecd9de 100644 --- a/firmware/target/coldfire/iriver/app.lds +++ b/firmware/target/coldfire/iriver/app.lds @@ -3,7 +3,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-m68k) -INPUT(target/coldfire/crt0.o) +STARTUP(target/coldfire/crt0.o) #define PLUGINSIZE PLUGIN_BUFFER_SIZE #define CODECSIZE CODEC_SIZE diff --git a/firmware/target/coldfire/iriver/boot.lds b/firmware/target/coldfire/iriver/boot.lds index 4e2619f764..5330cb6df7 100644 --- a/firmware/target/coldfire/iriver/boot.lds +++ b/firmware/target/coldfire/iriver/boot.lds @@ -2,7 +2,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-m68k) -INPUT(target/coldfire/crt0.o) +STARTUP(target/coldfire/crt0.o) #define DRAMSIZE (MEMORYSIZE * 0x100000) diff --git a/firmware/target/sh/archos/app.lds b/firmware/target/sh/archos/app.lds index 94cb437706..02ed6bef77 100644 --- a/firmware/target/sh/archos/app.lds +++ b/firmware/target/sh/archos/app.lds @@ -3,7 +3,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-sh) -INPUT(target/sh/crt0.o) +STARTUP(target/sh/crt0.o) #define PLUGINSIZE PLUGIN_BUFFER_SIZE #define CODECSIZE CODEC_SIZE diff --git a/firmware/target/sh/archos/boot.lds b/firmware/target/sh/archos/boot.lds index 8002f6e87f..b3c2c90a6c 100644 --- a/firmware/target/sh/archos/boot.lds +++ b/firmware/target/sh/archos/boot.lds @@ -2,7 +2,7 @@ ENTRY(start) OUTPUT_FORMAT(elf32-sh) -INPUT(target/sh/crt0.o) +STARTUP(target/sh/crt0.o) #define DRAMSIZE (MEMORYSIZE * 0x100000) -- cgit v1.2.3