This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

ld: section can't be allocated in segment 1


Hello!

I just tried to compile a standalone bootloader (u-boot) with the latest binutils-2.18
and gcc-4.2.2 on a
$ uname -a
Linux fox 2.6.22-rc6-gb75ae860 #5 Fri Jun 29 19:58:04 CEST 2007 ppc e500 GNU/Linux

But I run into a problem with the linker script:

$ ld -Bstatic -T /share/home/clemens/work/u-boot/u-boot-1.3.0-rc3/board/tqm85xx/u-boot.lds -Ttext 0xfffc0000  -n $UNDEF_SYM cpu/mpc85xx/start.o cpu/mpc85xx/resetvec.o \
--start-group lib_generic/libgeneric.a board/tqm85xx/libtqm85xx.a cpu/mpc85xx/libmpc85xx.a lib_ppc/libppc.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 net/libnet.a disk/libdisk.a rtc/librtc.a dtt/libdtt.a drivers/libdrivers.a drivers/bios_emulator/libatibiosemu.a drivers/nand/libnand.a drivers/nand_legacy/libnand_legacy.a drivers/onenand/libonenand.a drivers/net/libnet.a drivers/qe/qe.a drivers/serial/libserial.a drivers/sk98lin/libsk98lin.a post/libpost.a post/drivers/libpostdrivers.a post/lib_ppc/libpostppc.a post/lib_ppc/fpu/libpostppcfpu.a common/libcommon.a libfdt/libfdt.a --end-group -L /usr/lib/gcc/powerpc-unknown-linux-gnu/4.2.2 -lgcc \
-Map u-boot.map -o u-boot
ld: u-boot: section `.bootpg' can't be allocated in segment 1
ld: final link failed: Bad value
make: *** [u-boot] Error 1

What is the meaning of this error message? A "bad value" can be just everything.
With the older binutils-2.17 and gcc-4.2.0 this compiles just fine.

The linker script u-boot.lds contains:
----8<----------------
OUTPUT_ARCH(powerpc)
SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib);
/* Do we need any of these for elf?
   __DYNAMIC = 0;    */
SECTIONS
{
  .resetvec 0xFFFFFFFC :
  {
    *(.resetvec)
  } = 0xffff

  .bootpg 0xFFFFF000 :
  {
    cpu/mpc85xx/start.o (.bootpg)
    board/tqm85xx/init.o (.bootpg)
  } = 0xffff

  /* Read-only sections, merged into text segment: */
  . = + SIZEOF_HEADERS;
  .interp : { *(.interp) }
  .hash          : { *(.hash)           }
  .dynsym        : { *(.dynsym)         }
  .dynstr        : { *(.dynstr)         }
  .rel.text      : { *(.rel.text)               }
  .rela.text     : { *(.rela.text)      }
  .rel.data      : { *(.rel.data)               }
  .rela.data     : { *(.rela.data)      }
  .rel.rodata    : { *(.rel.rodata)     }
  .rela.rodata   : { *(.rela.rodata)    }
  .rel.got       : { *(.rel.got)                }
  .rela.got      : { *(.rela.got)               }
  .rel.ctors     : { *(.rel.ctors)      }
  .rela.ctors    : { *(.rela.ctors)     }
  .rel.dtors     : { *(.rel.dtors)      }
  .rela.dtors    : { *(.rela.dtors)     }
  .rel.bss       : { *(.rel.bss)                }
  .rela.bss      : { *(.rela.bss)               }
  .rel.plt       : { *(.rel.plt)                }
  .rela.plt      : { *(.rela.plt)               }
  .init          : { *(.init)   }
  .plt : { *(.plt) }
  .text      :
  {
    cpu/mpc85xx/start.o (.text)
    board/tqm85xx/init.o (.text)
    cpu/mpc85xx/traps.o (.text)
    cpu/mpc85xx/interrupts.o (.text)
    cpu/mpc85xx/cpu_init.o (.text)
    cpu/mpc85xx/cpu.o (.text)
    cpu/mpc85xx/speed.o (.text)
    cpu/mpc85xx/pci.o (.text)
    common/dlmalloc.o (.text)
    lib_generic/crc32.o (.text)
    lib_ppc/extable.o (.text)
    lib_generic/zlib.o (.text)
    *(.text)
    *(.fixup)
    *(.got1)
   }
    _etext = .;
    PROVIDE (etext = .);
    .rodata    :
   {
    *(.rodata)
    *(.rodata1)
    *(.rodata.str1.4)
    *(.eh_frame)
  }
  .fini      : { *(.fini)    } =0
  .ctors     : { *(.ctors)   }
  .dtors     : { *(.dtors)   }

  /* Read-write section, merged into data segment: */
  . = (. + 0x00FF) & 0xFFFFFF00;
  _erotext = .;
  PROVIDE (erotext = .);
  .reloc   :
  {
    *(.got)
    _GOT2_TABLE_ = .;
    *(.got2)
    _FIXUP_TABLE_ = .;
    *(.fixup)
  }
  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
  __fixup_entries = (. - _FIXUP_TABLE_) >> 2;

  .data    :
  {
    *(.data)
    *(.data1)
    *(.sdata)
    *(.sdata2)
    *(.dynamic)
    CONSTRUCTORS
  }
  _edata  =  .;
  PROVIDE (edata = .);

  . = .;
  __u_boot_cmd_start = .;
  .u_boot_cmd : { *(.u_boot_cmd) }
  __u_boot_cmd_end = .;

  . = .;
  __start___ex_table = .;
  __ex_table : { *(__ex_table) }
  __stop___ex_table = .;

  . = ALIGN(256);
  __init_begin = .;
  .text.init : { *(.text.init) }
  .data.init : { *(.data.init) }
  . = ALIGN(256);
  __init_end = .;

  __bss_start = .;
  .bss       :
  {
   *(.sbss) *(.scommon)
   *(.dynbss)
   *(.bss)
   *(COMMON)
  }
  _end = . ;
  PROVIDE (end = .);
}
----8<----------------

What has changed that it's now bogus?  Maybe some of you can give me
a hint to obvious problems. I RTFM, but it will take me some time to
dig into all the details here as I am not familiar with linker scripts
at all. :-(

Thank you,
--
Clemens Koller
__________________________________
R&D Imaging Devices
Anagramm GmbH
Rupert-Mayer-Straße 45/1
Linhof Werksgelände
D-81379 München
Tel.089-741518-50
Fax 089-741518-19
http://www.anagramm-technology.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]