summaryrefslogtreecommitdiff
path: root/apps/plugins
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2006-01-08 22:50:14 +0000
committerJens Arnold <amiconn@rockbox.org>2006-01-08 22:50:14 +0000
commit07c4254135aecc6ae0964d6d6413a40251e8f6a8 (patch)
treedac473efeb9f49cb6fefeb43c053f2dd0dc1b6cc /apps/plugins
parente8b1787296dae2a69893bd0fe97b2361fb6180ba (diff)
downloadrockbox-07c4254135aecc6ae0964d6d6413a40251e8f6a8.tar.gz
rockbox-07c4254135aecc6ae0964d6d6413a40251e8f6a8.zip
Don't include the .bss and .ibss sections in the binary image for codecs and plugins. Saves quite some disk space (and buffer space in case of codec changes during playback).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8308 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins')
-rw-r--r--apps/plugins/plugin.lds48
-rw-r--r--apps/plugins/rockboy/cpu.c2
-rw-r--r--apps/plugins/rockboy/lcd.c2
-rw-r--r--apps/plugins/rockboy/rockboy.c3
4 files changed, 37 insertions, 18 deletions
diff --git a/apps/plugins/plugin.lds b/apps/plugins/plugin.lds
index 83825b9035..fc9d4d4efe 100644
--- a/apps/plugins/plugin.lds
+++ b/apps/plugins/plugin.lds
@@ -60,7 +60,8 @@ MEMORY
60 60
61SECTIONS 61SECTIONS
62{ 62{
63 .text : { 63 .text :
64 {
64 KEEP(*(.entry)) 65 KEEP(*(.entry))
65 *(.text*) 66 *(.text*)
66#if CONFIG_CPU==PP5020 67#if CONFIG_CPU==PP5020
@@ -69,26 +70,25 @@ SECTIONS
69#endif 70#endif
70 } > PLUGIN_RAM 71 } > PLUGIN_RAM
71 72
72 .data : { 73 .rodata :
73 *(.data*) 74 {
74 } > PLUGIN_RAM
75
76 /DISCARD/ : {
77 *(.eh_frame)
78 }
79
80 .bss : {
81 *(.bss*)
82 } > PLUGIN_RAM
83
84 .rodata : {
85 *(.rodata*) 75 *(.rodata*)
86 . = ALIGN(0x4); 76 . = ALIGN(0x4);
77 } > PLUGIN_RAM
78
79 .data :
80 {
81 *(.data*)
87#if defined(ARCH_IRIVER) || defined(ARCH_IPOD) 82#if defined(ARCH_IRIVER) || defined(ARCH_IPOD)
88 iramcopy = .; 83 iramcopy = .;
89#endif 84#endif
90 } > PLUGIN_RAM 85 } > PLUGIN_RAM
91 86
87 /DISCARD/ :
88 {
89 *(.eh_frame)
90 }
91
92#if defined(ARCH_IRIVER) || defined(ARCH_IPOD) 92#if defined(ARCH_IRIVER) || defined(ARCH_IPOD)
93 .iram IRAMORIG : AT ( iramcopy) 93 .iram IRAMORIG : AT ( iramcopy)
94 { 94 {
@@ -96,13 +96,29 @@ SECTIONS
96 *(.icode) 96 *(.icode)
97 *(.irodata) 97 *(.irodata)
98 *(.idata) 98 *(.idata)
99 *(.ibss)
100 iramend = .; 99 iramend = .;
101 } > PLUGIN_IRAM 100 } > PLUGIN_IRAM
101
102 .ibss (NOLOAD) :
103 {
104 iedata = .;
105 *(.ibss)
106 . = ALIGN(0x4);
107 iend = .;
108 } > PLUGIN_IRAM
109
110 .bss ADDR(.data) + SIZEOF(.data) + SIZEOF(.iram):
111#else
112 .bss :
102#endif 113#endif
114 {
115 *(.bss*)
116 } > PLUGIN_RAM
117
103 /* Special trick to avoid a linker error when no other sections are 118 /* Special trick to avoid a linker error when no other sections are
104 left after garbage collection (plugin not for this platform) */ 119 left after garbage collection (plugin not for this platform) */
105 .comment 0 : { 120 .comment 0 :
121 {
106 KEEP(*(.comment)) 122 KEEP(*(.comment))
107 } 123 }
108} 124}
diff --git a/apps/plugins/rockboy/cpu.c b/apps/plugins/rockboy/cpu.c
index 6118633899..5c4abc519f 100644
--- a/apps/plugins/rockboy/cpu.c
+++ b/apps/plugins/rockboy/cpu.c
@@ -17,7 +17,7 @@
17#endif 17#endif
18 18
19 19
20struct cpu cpu IDATA_ATTR; 20struct cpu cpu IBSS_ATTR;
21 21
22 22
23 23
diff --git a/apps/plugins/rockboy/lcd.c b/apps/plugins/rockboy/lcd.c
index a8f8c695da..883c4952fc 100644
--- a/apps/plugins/rockboy/lcd.c
+++ b/apps/plugins/rockboy/lcd.c
@@ -15,7 +15,7 @@
15 15
16struct lcd lcd; 16struct lcd lcd;
17 17
18struct scan scan IDATA_ATTR; 18struct scan scan IBSS_ATTR;
19 19
20#define BG (scan.bg) 20#define BG (scan.bg)
21#define WND (scan.wnd) 21#define WND (scan.wnd)
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c
index 90452e55d6..56773879fa 100644
--- a/apps/plugins/rockboy/rockboy.c
+++ b/apps/plugins/rockboy/rockboy.c
@@ -42,6 +42,8 @@ const struct {
42extern char iramcopy[]; 42extern char iramcopy[];
43extern char iramstart[]; 43extern char iramstart[];
44extern char iramend[]; 44extern char iramend[];
45extern char iedata[];
46extern char iend[];
45#endif 47#endif
46 48
47/* here is a global api struct pointer. while not strictly necessary, 49/* here is a global api struct pointer. while not strictly necessary,
@@ -116,6 +118,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
116 118
117#ifdef USE_IRAM 119#ifdef USE_IRAM
118 memcpy(iramstart, iramcopy, iramend-iramstart); 120 memcpy(iramstart, iramcopy, iramend-iramstart);
121 memset(iedata, 0, iend - iedata);
119#endif 122#endif
120 shut=0; 123 shut=0;
121 cleanshut=0; 124 cleanshut=0;