Dear Albert Aribaud,

in reply to 
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/88014/focus=88022 I have 
to tell another issue. I try to get the elf relocation stuff working for 
arm920t and run into some compiler issues. Sorry, had no time to investigate 
that but maybe one has some pointers?

I have have adopted your changes to arm926ejs to arm920t and built that with my 
own toolchain (gcc 4.5.1, binutils 2.20.1.20100303) and codesourcery 
2010q1-202. The codesourcery report is compareable so i send it here:

---8<---
...
cd /tmp/build_uboot-at91rm9200ek && arm-none-linux-gnueabi-ld -Bstatic -T 
/tmp/build_uboot-at91rm9200ek/u-boot.lds  -pie -Ttext 0x21000000 $UNDEF_SYM 
arch/arm/cpu/arm920t/start.o --start-group lib/libgeneric.a lib/lzma/liblzma.a 
lib/lzo/liblzo.a arch/arm/cpu/arm920t/libarm920t.a 
arch/arm/cpu/arm920t/at91/libat91.a arch/arm/lib/libarm.a fs/cramfs/libcramfs.a 
fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a fs/reiserfs/libreiserfs.a 
fs/ext2/libext2fs.a fs/yaffs2/libyaffs2.a fs/ubifs/libubifs.a net/libnet.a 
disk/libdisk.a drivers/bios_emulator/libatibiosemu.a drivers/block/libblock.a 
drivers/dma/libdma.a drivers/fpga/libfpga.a drivers/gpio/libgpio.a 
drivers/hwmon/libhwmon.a drivers/i2c/libi2c.a drivers/input/libinput.a 
drivers/misc/libmisc.a drivers/mmc/libmmc.a drivers/mtd/libmtd.a 
drivers/mtd/nand/libnand.a drivers/mtd/onenand/libonenand.a 
drivers/mtd/ubi/libubi.a drivers/mtd/spi/libspi_flash.a drivers/net/libnet.a 
drivers/net/phy/libphy.a drivers/pci/libpci.a drivers/pcmcia/libpcmcia.a 
drivers/power/libpower.a drivers/spi/libspi.a drivers/rtc/librtc.a 
drivers/serial/libserial.a drivers/twserial/libtws.a 
drivers/usb/gadget/libusb_gadget.a drivers/usb/host/libusb_host.a 
drivers/usb/musb/libusb_musb.a drivers/usb/phy/libusb_phy.a 
drivers/video/libvideo.a drivers/watchdog/libwatchdog.a common/libcommon.a 
lib/libfdt/libfdt.a api/libapi.a post/libpost.a 
board/atmel/at91rm9200ek/libat91rm9200ek.a --end-group 
/tmp/build_uboot-at91rm9200ek/arch/arm/lib/eabi_compat.o -L 
/home/andreas/src/arm-2010q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1 -lgcc 
-Map u-boot.map -o u-boot
arm-none-linux-gnueabi-ld: BFD (Sourcery G++ Lite 2010q1-202) 2.19.51.20090709 
assertion fail 
/scratch/julian/2010q1-release-linux-lite/obj/binutils-src-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu/bfd/elf32-arm.c:12338
arm-none-linux-gnueabi-ld: BFD (Sourcery G++ Lite 2010q1-202) 2.19.51.20090709 
assertion fail 
/scratch/julian/2010q1-release-linux-lite/obj/binutils-src-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu/bfd/elf32-arm.c:12572
/bin/sh: line 1: 12104 Speicherzugriffsfehler  arm-none-linux-gnueabi-ld 
-Bstatic -T /tmp/build_uboot-at91rm9200ek/u-boot.lds -pie -Ttext 0x21000000 
$UNDEF_SYM arch/arm/cpu/arm920t/start.o --start-group lib/libgeneric.a 
lib/lzma/liblzma.a lib/lzo/liblzo.a arch/arm/cpu/arm920t/libarm920t.a 
arch/arm/cpu/arm920t/at91/libat91.a arch/arm/lib/libarm.a fs/cramfs/libcramfs.a 
fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a fs/reiserfs/libreiserfs.a 
fs/ext2/libext2fs.a fs/yaffs2/libyaffs2.a fs/ubifs/libubifs.a net/libnet.a 
disk/libdisk.a drivers/bios_emulator/libatibiosemu.a drivers/block/libblock.a 
drivers/dma/libdma.a drivers/fpga/libfpga.a drivers/gpio/libgpio.a 
drivers/hwmon/libhwmon.a drivers/i2c/libi2c.a drivers/input/libinput.a 
drivers/misc/libmisc.a drivers/mmc/libmmc.a drivers/mtd/libmtd.a 
drivers/mtd/nand/libnand.a drivers/mtd/onenand/libonenand.a 
drivers/mtd/ubi/libubi.a drivers/mtd/spi/libspi_flash.a drivers/net/libnet.a 
drivers/net/phy/libphy.a drivers/pci/libpci.a drivers/pcmcia/libpcmcia.a 
drivers/power/libpower.a drivers/spi/libspi.a drivers/rtc/librtc.a 
drivers/serial/libserial.a drivers/twserial/libtws.a 
drivers/usb/gadget/libusb_gadget.a drivers/usb/host/libusb_host.a 
drivers/usb/musb/libusb_musb.a drivers/usb/phy/libusb_phy.a 
drivers/video/libvideo.a drivers/watchdog/libwatchdog.a common/libcommon.a 
lib/libfdt/libfdt.a api/libapi.a post/libpost.a 
board/atmel/at91rm9200ek/libat91rm9200ek.a --end-group 
/tmp/build_uboot-at91rm9200ek/arch/arm/lib/eabi_compat.o -L 
/home/andreas/src/arm-2010q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1 -lgcc 
-Map u-boot.map -o u-boot
make: *** [/tmp/build_uboot-at91rm9200ek/u-boot] Fehler 139
...
--->8---

My self built toolchain runs into the same assertions, I think so at least. I 
wonder whether this is a pure toolchain problem/bug or if it have some 
connection to the input and maybe we are missing a essential thing? I had a 
short look into the binutils code and found it crashes when looking up .plt 
sections which are discarded in linker script. See the following snippet of 
binutils-2.20.1/bfd/elf32-arm.c near lines 12337

---8<---
static bfd_boolean
elf32_arm_finish_dynamic_sections (bfd * output_bfd, struct bfd_link_info * 
info)
...
  if (elf_hash_table (info)->dynamic_sections_created)
...
      for (; dyncon < dynconend; dyncon++)
...
          bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn);

          switch (dyn.d_tag)
...
            case DT_PLTRELSZ:
              s = bfd_get_section_by_name (output_bfd,
                                           RELOC_SECTION (htab, ".plt"));
              BFD_ASSERT (s != NULL);                                           
      <- second assertion
              dyn.d_un.d_val = s->size;                                         
          <- segfault
              bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
              break;
...
--->8---

My changes in arm920t/start.S will follow. The board to test is at91rm9200ek. 
Maybe one can test my changes with ELDK toolchain?

regards

Andreas Bießmann
_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to