• Status Closed
  • Percent Complete
  • Task Type Patches
  • Category Battery/Charging
  • Assigned To No-one
  • Operating System All players
  • Severity Low
  • Priority Very Low
  • Reported Version Daily build (which?)
  • Due in Version Undecided
  • Due Date Undecided
  • Votes
  • Private
Attached to Project: Rockbox
Opened by nls - 2007-09-25
Last edited by nls - 2011-01-12

FS#7832 - Building with gcc 4.5

These patches are changes I made to make rockbox build and work with gcc 4.3 and binutils 2.18+ for h300.

I have not built for any other targets than h300, Lear did build for h100 though but he had to remove some code in the core from iram to make it fit.

Building the latest gcc 4.3 snapshot for m68k-elf requires a current snapshot of binutils too, 2.18 won’t work without patching gcc to disable new processor support.

configure.diff: Pass the correct -mcpu option to gcc.

linkscript.diff: Make linking of rockbox work correctly with binutils later than 2.17

pcfdriver.diff: Make asm blocks ‘volatile’ to make the buttons/rtc/batterylevel work

shndec.diff: remove ‘volatile’ from an asm block to make the flac codec build (this seems like a compiler bug)

tremor_*.diff build Tremor with -O2 to reduce code size and remove some floor0 type specific stuff from iram to make the iram section of the codec fit.

Closed by  nls
2011-01-12 23:12
Reason for closing:  Accepted
Additional comments about closing:   Warning: Undefined array key "typography" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 371 Warning: Undefined array key "camelcase" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 407


I tried using gcc 4.3.2 with binutils (because the 2.19 release has issues on arm and I was too lazy to dig for the patch for it). Unfortunately, I error out right away with “as: unrecognized option ‘-mcpu=arm7tdmi’”

Any ideas? I’ve applied the multilibs patch, and theres definitely a arm7tdmi folder in my gcc build.

nls commented on 2009-05-31 16:42

This was sort of abandoned for gcc 4.3 since it turned out there was a pretty bad bug
in it that would cause it to emit incorrect code that could not be assembled that is however fixed in 4.4
so it might be time to revisit this soon, anyway the pcfdriver patch has been comitted and hopefully the
patches removing tremor stuff from iram are no longer needed.

Michael, sorry fro the very late reply but others have been able to build with 4.4 for those arm7tdmi targets
so i would guess there’s an issue with your setup.

nls commented on 2009-12-27 01:25

New patch, for building with gcc 4.4.2 / binutils 2.20
This replaces all the earlier patches and is the only thing needed to build coldfire targets with this toolchain (tested with h300 only for now)
codec benchmarks show both speedups and slowdowns, more tweaking of optimization settings is needed.
The patch fixes compilation of the shorten codec, libmad and libtremor with this new toolchain, the libmad problem
is caused by the inline asm in synth_full() using too many registers (the function should probably be written in asm entirely) and tremor gets too large to fit in iram.
I also included tuning of the optimization setting for flac, it gives a significant speedup. (and changes flac from slowdown to speedup)

nls commented on 2010-12-27 10:06

New patches for building with gcc 4.5.2 / binutils 2.20.1

The tools patch adjusts configure and rockboxdev for the new toolchain.
the other patch tweaks the codec optimization settings for best performance when testing with the test_files

There are large speedups for aac and flac.
Small speedups for ac3, ape (mostly c1000), alac, atrac, cook, mpc
libmad is a little weird: mp3 is a little faster (3-5%), mp2 is ~10% faster but mp1 is 2-4% slower

vorbis is slowed down 0.5-2.5%
wma is slowed down 1-3.5%

nls commented on 2011-01-07 18:56

Synced the tools patch.
To build the new toolchain on cygwin i had to install libiconv and g++ in addition to what the wiki page said.


Available keyboard shortcuts


Task Details

Task Editing