On Mon, 2009-09-28 at 16:41 +0200, Joakim Tjernlund wrote: > Peter Tyser <pty...@xes-inc.com> wrote on 28/09/2009 14:45:46: > > > > On Mon, 2009-09-28 at 09:34 +0200, Joakim Tjernlund wrote: > > > Peter Tyser <pty...@xes-inc.com> wrote on 28/09/2009 06:31:28: > > > > > > > > On Sun, 2009-09-27 at 15:15 +0200, Joakim Tjernlund wrote: > > > > > Wolfgang Denk <w...@denx.de> wrote on 23/09/2009 20:23:14: > > > > > > > > > > > > Dear Peter Tyser, > > > > > > > > > > > > In message <1253710639.3968.19.ca...@ptyser-laptop> you wrote: > > > > > > > > > > > > > > My "fix" to the linker script was to change: > > > > > > > __bss_start = .; > > > > > > > into: > > > > > > > __bss_start = . | 4; > > > > > > > > > > > > > > ie, a big hack, but it did work:) I'll take a peek at a more > > > > > > > proper > > > > > > > link script workaround. > > > > > > > > > > > > 32 bit alignment of the BSS segment might not be sufficient. Be > > > > > > careful! > > > > > > > > > > Any progress on this ? > > > > > > > > I've been swamped the last few days, but think I have a workaround. I > > > > hope to test it tomorrow or tues. I'll send an email when I have a more > > > > definitive answer. > > > > > > > > > > > Nice! It'd be great to have the magical 20 lines of assembly put > > > > > > > into > > > > > > > some semi-understandable c. > > > > > > > > > > > > :-) > > > > > > > > > > I have worked some more on this but all boards need to be converted > > > > > to use > > > > > the new C-variants. > > > > > > > > Great! > > > > > > > > > Anyhow, I have also been thinking/working on making U-boot > > > > > fully PIC and reached a important conclusion. The GOT holds absolute > > > > > ptr values and there is not much one can do about it sans modifying > > > > > gcc. > > > > > So before u-boot is relocated to RAM one must manually add any offset > > > > > to > > > > > all global/static data and string literals. The majority of strings > > > > > are passed directly to printf and friends so the offset can be added > > > > > inside > > > > > printf. The remaining few data accesses needs to be dealt with > > > > > directly, example: > > > > > - for (init_fnc_ptr = init_sequence; *init_fnc_ptr; > > > > > ++init_fnc_ptr) { > > > > > + for (init_fnc_ptr = got_off(init_sequence); *init_fnc_ptr; + > > +init_fnc_ptr) { > > > > > > > > > > Only code called before relocation to RAM needs this, mostly the _f() > > > > > functions. > > > > > Would this be an acceptable change? > > > > > > > > Could you describe the advantages of generating a fully PIC U-Boot > > > > image? I understand you could execute the image from different places > > > > in flash, but on the boards I've worked with this isn't a huge concern. > > > > For example, its possible to have a preliminary flash mapping that > > > > U-Boot executes from, then after relocation to RAM that flash mapping > > > > can be modified. So where U-Boot initially executes from isn't all that > > > > important for me. Is there some killer feature that a fully PIC U-Boot > > > > provides to make adding the got_off() workarounds you mention > > > > worthwhile? > > > > > > For me, it is mainly to be to have two u-boot partitions and > > > be able to select one to boot from. This makes it safer to > > > update u-boot in the field. > > Peter, I just discovered that my gcc 3.4.6 allows me to use -mrelocatable > with -fpie > -fpie is about the same as -fpic and -fPIE is similar to -fPIC > -fpie generates smaller code so one could consider using -fpie and > -mrelocatable > However -fpic/-fpie needs some fixes to the relocation code, but a quick hack > by me works on my board. > > Does -fpie and -mrelocatable compile for you and do you have a non zero fixup > section?
-fpie and -mrelocatable does compile for me (tested on the XPedite5370 with gcc 4.2.2) and has a non-zero fixup section. However, the -fpie U-Boot image is slightly larger: pty...@petert u-boot $ size u-boot.PIC text data bss dec hex filename 304300 28644 33156 366100 59614 u-boot.PIC pty...@petert u-boot $ size u-boot.pie text data bss dec hex filename 304508 28624 33156 366288 596d0 u-boot.pie Let me know if I can provide any additional detail. Best, Peter _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot