Building the Bootloader

John David Anglin dave@hiauly1.hia.nrc.ca
Tue, 1 Jun 1999 17:35:59 -0400 (EDT)


>   Care was taken -- the ipl is position independent with the chosen 
>   combination of flags and code design. The ipl makes no assumption about the
>   location it will be loaded into by the ROM (see ipl_s.s). Text offset zero 
>   is correct for linking in the scheme I have chosen. The bootloader determines
>   where is was loaded at runtime and sets the dp and sp accordingly. All of
>   this should be obvious from the code.

It is not obvious to me that the C code is position independent.

>   The specific combination of flags allowed me to get something resembling
>   a straight binary image (by ignoring the header) and position independence.
>   For some reason I can't remember now, -fpic didn't get the job done
>   (perhaps a compiler defect).

When -fpic is used, $global$ is not used as an offset to access data
variables.  Gnu ld doesn't seem to like $global$ not being used:

624 (hiauly1)dave> make
hppa-linux-as                  ipl_s.s -o ipl_s.o
ipl_s.s: Assembler messages:
ipl_s.s:65: Warning: Ignoring subspace decl due to ELF BFD bugs.
ipl_s.s:68: Warning: Ignoring subspace decl due to ELF BFD bugs.
ipl_s.s:83: Warning: Ignoring subspace decl due to ELF BFD bugs.
ipl_s.s:243: Warning: Ignoring subspace decl due to ELF BFD bugs.
hppa-linux-gcc           -fwritable-strings -mdisable-fpregs -fpic -c ipl_c.c
hppa-linux-gcc           -fwritable-strings -mdisable-fpregs -fpic -c rom_interf
ace.c
hppa-linux-ld                  -Ttext 0 -N ipl_s.o ipl_c.o rom_interface.o -L/eh
ic/a/lib/gcc-lib/hppa-linux/egcs-2.91.60 -lgcc -o ipl
ipl_c.o: In function `IPL_main':
ipl_c.o($CODE$+0x60): undefined reference to `$global$'
make: *** [ipl] Error 1

Inspection of ipl_c.o shows that there is no actual reference to $global$
in ipl_c.o.  No errors occur if -fpic is removed.  

-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)