Relocating .data at 0x0

David Robins dbrobins@student.math.uwaterloo.ca
Thu May 31 20:53:00 GMT 2001


Regarding the previous message that I posted:

I tracked down the problem to binutils/ld/aoutx.h ~line 1010:

  if (abdp && abdp->zmagic_mapped_contiguous)
    { 
      text_pad = (obj_datasec(abfd)->vma
          - obj_textsec(abfd)->vma
          - obj_textsec(abfd)->_raw_size);
      obj_textsec(abfd)->_raw_size += text_pad;
    }

In i386linux.c, MY_zmagic_contiguous is #defined to 1 which sets
zmagic_mapped_contiguous in the aout_backend_data struct.  Other targets
might not have the same problem.

Since the VMA for .text was 0x30 and .data was at 0x0, text_pad is set
negative and corrupts the .text output section's _raw_size, causing an
error (the oh-so-descriptive "bad value") in the bfd_final_link stage.

Granted, normally this problem won't occur, since most people don't need
that sort of linker script, but I just thought I'd mention it in case
perhaps someone wants to insert an assertion or check/warning, or if
someone has the same problem in the future they can read this.

Dave
Isa. 40:31



More information about the Binutils mailing list