diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2013-07-11 00:28:39 -0400 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2013-07-11 00:28:39 -0400 |
commit | 2948cb42aecfe42a2dcad40d7791f703512891aa (patch) | |
tree | 4b9041993ed94840d6f5c8f8cc53dab6eac75100 | |
parent | 5c2ad2fd36be7a0d1ec2468e6b270047c36d8a6f (diff) | |
download | rockbox-2948cb42aecfe42a2dcad40d7791f703512891aa.tar.gz rockbox-2948cb42aecfe42a2dcad40d7791f703512891aa.zip |
Revert "Fix .ncbss from possibly overlapping .ncdata in plugins/codecs."
This reverts commit 5c2ad2fd36be7a0d1ec2468e6b270047c36d8a6f.
The .ncbss bug is still showing up. Will try again shortly.
-rw-r--r-- | apps/plugins/plugin.lds | 65 |
1 files changed, 35 insertions, 30 deletions
diff --git a/apps/plugins/plugin.lds b/apps/plugins/plugin.lds index d5cfaae406..10ce98fca4 100644 --- a/apps/plugins/plugin.lds +++ b/apps/plugins/plugin.lds | |||
@@ -247,15 +247,16 @@ SECTIONS | |||
247 | { | 247 | { |
248 | *(.rodata*) | 248 | *(.rodata*) |
249 | #if defined(IRAMSIZE) && IRAMSIZE == 0 | 249 | #if defined(IRAMSIZE) && IRAMSIZE == 0 |
250 | *(.irodata) | 250 | *(.irodata) |
251 | #endif | 251 | #endif |
252 | . = ALIGN(0x4); | ||
252 | } > PLUGIN_RAM | 253 | } > PLUGIN_RAM |
253 | 254 | ||
254 | .data : | 255 | .data : |
255 | { | 256 | { |
256 | *(.data*) | 257 | *(.data*) |
257 | #if defined(IRAMSIZE) && IRAMSIZE == 0 | 258 | #if defined(IRAMSIZE) && IRAMSIZE == 0 |
258 | *(.idata) | 259 | *(.idata) |
259 | #endif | 260 | #endif |
260 | } > PLUGIN_RAM | 261 | } > PLUGIN_RAM |
261 | 262 | ||
@@ -265,11 +266,15 @@ SECTIONS | |||
265 | . = ALIGN(CACHEALIGN_SIZE); | 266 | . = ALIGN(CACHEALIGN_SIZE); |
266 | *(.ncdata*) | 267 | *(.ncdata*) |
267 | . = ALIGN(CACHEALIGN_SIZE); | 268 | . = ALIGN(CACHEALIGN_SIZE); |
268 | } AT> PLUGIN_RAM | 269 | /* EABI currently needs iramcopy defined here, otherwise .iram can sometimes |
269 | . -= NOCACHE_BASE; | 270 | have an incorrect load address, breaking codecs. */ |
271 | #if defined(IRAMSIZE) | ||
272 | iramcopy = . - NOCACHE_BASE; | ||
270 | #endif | 273 | #endif |
271 | 274 | } AT> PLUGIN_RAM | |
272 | #if defined(IRAMSIZE) && IRAMSIZE != 0 | 275 | /* This definition is used when NOCACHE_BASE is 0. The address offset bug only |
276 | seems to occur when the empty .ncdata is present. */ | ||
277 | #elif defined(IRAMSIZE) | ||
273 | iramcopy = .; | 278 | iramcopy = .; |
274 | #endif | 279 | #endif |
275 | 280 | ||
@@ -281,13 +286,33 @@ SECTIONS | |||
281 | #endif | 286 | #endif |
282 | } | 287 | } |
283 | 288 | ||
284 | .bss . (NOLOAD) : | 289 | #if defined(IRAMSIZE) && IRAMSIZE != 0 |
290 | .iram IRAMORIG : AT ( iramcopy) | ||
291 | { | ||
292 | iramstart = .; | ||
293 | *(.icode) | ||
294 | *(.irodata) | ||
295 | *(.idata) | ||
296 | iramend = .; | ||
297 | } > PLUGIN_IRAM | ||
298 | |||
299 | |||
300 | .ibss (NOLOAD) : | ||
301 | { | ||
302 | iedata = .; | ||
303 | *(.ibss) | ||
304 | . = ALIGN(0x4); | ||
305 | iend = .; | ||
306 | } > PLUGIN_IRAM | ||
307 | #endif | ||
308 | |||
309 | .bss (NOLOAD) : | ||
285 | { | 310 | { |
286 | plugin_bss_start = .; | 311 | plugin_bss_start = .; |
287 | _plugin_bss_start = .; | 312 | _plugin_bss_start = .; |
288 | *(.bss*) | 313 | *(.bss*) |
289 | #if defined(IRAMSIZE) && IRAMSIZE == 0 | 314 | #if defined(IRAMSIZE) && IRAMSIZE == 0 |
290 | *(.ibss) | 315 | *(.ibss) |
291 | #endif | 316 | #endif |
292 | *(COMMON) | 317 | *(COMMON) |
293 | . = ALIGN(0x4); | 318 | . = ALIGN(0x4); |
@@ -300,35 +325,15 @@ SECTIONS | |||
300 | *(.ncbss*) | 325 | *(.ncbss*) |
301 | . = ALIGN(CACHEALIGN_SIZE); | 326 | . = ALIGN(CACHEALIGN_SIZE); |
302 | } AT> PLUGIN_RAM | 327 | } AT> PLUGIN_RAM |
303 | . -= NOCACHE_BASE; | ||
304 | #endif | 328 | #endif |
305 | 329 | ||
306 | /* Final end of plugin after IRAM setup */ | 330 | /* Restore . */ |
307 | .pluginend : | 331 | .pluginend . - NOCACHE_BASE : |
308 | { | 332 | { |
309 | _plugin_end_addr = .; | 333 | _plugin_end_addr = .; |
310 | plugin_end_addr = .; | 334 | plugin_end_addr = .; |
311 | } | 335 | } |
312 | 336 | ||
313 | #if defined(IRAMSIZE) && IRAMSIZE != 0 | ||
314 | .iram IRAMORIG : AT (iramcopy) | ||
315 | { | ||
316 | iramstart = .; | ||
317 | *(.icode) | ||
318 | *(.irodata) | ||
319 | *(.idata) | ||
320 | iramend = .; | ||
321 | } > PLUGIN_IRAM | ||
322 | |||
323 | .ibss (NOLOAD) : | ||
324 | { | ||
325 | iedata = .; | ||
326 | *(.ibss) | ||
327 | . = ALIGN(0x4); | ||
328 | iend = .; | ||
329 | } > PLUGIN_IRAM | ||
330 | #endif | ||
331 | |||
332 | /* Special trick to avoid a linker error when no other sections are | 337 | /* Special trick to avoid a linker error when no other sections are |
333 | left after garbage collection (plugin not for this platform) */ | 338 | left after garbage collection (plugin not for this platform) */ |
334 | .comment 0 : | 339 | .comment 0 : |