bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ld overwriting output sections???


From: Jakub Jermar
Subject: ld overwriting output sections???
Date: Sat, 10 Sep 2005 18:47:02 +0200
User-agent: Debian Thunderbird 1.0.2 (X11/20050817)

Hello binutils people,

my team discovered a strange problem with the linker script which I attach to 
this email.
Depending on the presence of the line containing:

LONG(0xdeadbeaf);

the kernel image is linked together correctly (line is present) or the .mapped section overwrites the .unmapped section (line is not present).

We use binutils 2.16 cross compiled for IA-32.

Is there anything wrong with our linking process or is it a bug in ld?

Please, Cc: me as I don't read this mailing list.

Thanks for your help,
Jakub
OUTPUT_FORMAT(binary)
ENTRY(kernel_image_start)

SECTIONS {
 .unmapped 0x8000: AT (0x8000) {
  unmapped_ktext_start = .;
  *(K_TEXT_START);
  *(K_TEXT_START_2);
  unmapped_ktext_end = .;

  unmapped_kdata_start = .;
  *(K_DATA_START);

  unmapped_kdata_end = .;
 }

 .mapped (((0x100000 +0x8000) + 0x80000000)+SIZEOF(.unmapped)): AT (0x8000 
+SIZEOF(.unmapped)) {
  ktext_start = .;
  *(BOOT_DATA);
  *(.text);
  ktext_end = .;

  kdata_start = .;
  *(.data);
  *(.rodata*);
  *(COMMON);
  hardcoded_load_address = .;
  LONG(((0x100000 +0x8000) + 0x80000000));
  hardcoded_ktext_size = .;
  LONG((ktext_end - ktext_start) + (unmapped_ktext_end - unmapped_ktext_start));
  hardcoded_kdata_size = .;
  LONG((kdata_end - kdata_start) + (unmapped_kdata_end - unmapped_kdata_start));
  hardcoded_unmapped_ktext_size = .;
  LONG(unmapped_ktext_end - unmapped_ktext_start);
  hardcoded_unmapped_kdata_size = .;
  LONG(unmapped_kdata_end - unmapped_kdata_start);
  *(.bss);
  *(.note.GNU-stack);
                *(.comment);

  symbol_table = .;
  *(symtab.*);

  kdata_end = .;
 }

 _hardcoded_kernel_size = (ktext_end - ktext_start) + (unmapped_ktext_end - 
unmapped_ktext_start) + (kdata_end - kdata_start) + (unmapped_kdata_end - 
unmapped_kdata_start);
 _hardcoded_unmapped_size = (unmapped_ktext_end - unmapped_ktext_start) + 
(unmapped_kdata_end - unmapped_kdata_start);

 e820table_boot = ((e820table) - 0x80000000) - 0x100000;
 e820counter_boot = ((e820counter) - 0x80000000) - 0x100000;
 real_bootstrap_gdtr = ((real_bootstrap_gdtr_boot) + 0x80000000);
}

reply via email to

[Prev in Thread] Current Thread [Next in Thread]