forked from len0rd/rockbox
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
This commit is contained in:
parent
e8b1787296
commit
07c4254135
13 changed files with 70 additions and 24 deletions
|
@ -60,7 +60,8 @@ MEMORY
|
|||
|
||||
SECTIONS
|
||||
{
|
||||
.text : {
|
||||
.text :
|
||||
{
|
||||
KEEP(*(.entry))
|
||||
*(.text*)
|
||||
#if CONFIG_CPU==PP5020
|
||||
|
@ -69,26 +70,25 @@ SECTIONS
|
|||
#endif
|
||||
} > PLUGIN_RAM
|
||||
|
||||
.data : {
|
||||
*(.data*)
|
||||
} > PLUGIN_RAM
|
||||
|
||||
/DISCARD/ : {
|
||||
*(.eh_frame)
|
||||
}
|
||||
|
||||
.bss : {
|
||||
*(.bss*)
|
||||
} > PLUGIN_RAM
|
||||
|
||||
.rodata : {
|
||||
.rodata :
|
||||
{
|
||||
*(.rodata*)
|
||||
. = ALIGN(0x4);
|
||||
} > PLUGIN_RAM
|
||||
|
||||
.data :
|
||||
{
|
||||
*(.data*)
|
||||
#if defined(ARCH_IRIVER) || defined(ARCH_IPOD)
|
||||
iramcopy = .;
|
||||
#endif
|
||||
} > PLUGIN_RAM
|
||||
|
||||
/DISCARD/ :
|
||||
{
|
||||
*(.eh_frame)
|
||||
}
|
||||
|
||||
#if defined(ARCH_IRIVER) || defined(ARCH_IPOD)
|
||||
.iram IRAMORIG : AT ( iramcopy)
|
||||
{
|
||||
|
@ -96,13 +96,29 @@ SECTIONS
|
|||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.ibss)
|
||||
iramend = .;
|
||||
} > PLUGIN_IRAM
|
||||
|
||||
.ibss (NOLOAD) :
|
||||
{
|
||||
iedata = .;
|
||||
*(.ibss)
|
||||
. = ALIGN(0x4);
|
||||
iend = .;
|
||||
} > PLUGIN_IRAM
|
||||
|
||||
.bss ADDR(.data) + SIZEOF(.data) + SIZEOF(.iram):
|
||||
#else
|
||||
.bss :
|
||||
#endif
|
||||
{
|
||||
*(.bss*)
|
||||
} > PLUGIN_RAM
|
||||
|
||||
/* Special trick to avoid a linker error when no other sections are
|
||||
left after garbage collection (plugin not for this platform) */
|
||||
.comment 0 : {
|
||||
.comment 0 :
|
||||
{
|
||||
KEEP(*(.comment))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#endif
|
||||
|
||||
|
||||
struct cpu cpu IDATA_ATTR;
|
||||
struct cpu cpu IBSS_ATTR;
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
struct lcd lcd;
|
||||
|
||||
struct scan scan IDATA_ATTR;
|
||||
struct scan scan IBSS_ATTR;
|
||||
|
||||
#define BG (scan.bg)
|
||||
#define WND (scan.wnd)
|
||||
|
|
|
@ -42,6 +42,8 @@ const struct {
|
|||
extern char iramcopy[];
|
||||
extern char iramstart[];
|
||||
extern char iramend[];
|
||||
extern char iedata[];
|
||||
extern char iend[];
|
||||
#endif
|
||||
|
||||
/* 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)
|
|||
|
||||
#ifdef USE_IRAM
|
||||
memcpy(iramstart, iramcopy, iramend-iramstart);
|
||||
memset(iedata, 0, iend - iedata);
|
||||
#endif
|
||||
shut=0;
|
||||
cleanshut=0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue