This is the mail archive of the binutils@sources.redhat.com 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]

Re: Oddity in the linker code on AIX


Eric Botcazou <ebotcazou@adacore.com> writes:

> #ifdef ALIGN_SECTIONS_IN_FILE
>       if ((abfd->flags & EXEC_P) != 0)
> 	{
> 	  /* Make sure this section is aligned on the right boundary - by
> 	     padding the previous section up if necessary.  */
> 
> 	  old_sofar = sofar;
> #ifdef RS6000COFF_C
> 	  /* AIX loader checks the text section alignment of (vma - filepos)
> 	     So even though the filepos may be aligned wrt the o_algntext, for
> 	     AIX executables, this check fails. This shows up when a native
> 	     AIX executable is stripped with gnu strip because the default vma
> 	     of native is 0x10000150 but default for gnu is 0x10000140.  Gnu
> 	     stripped gnu excutable passes this check because the filepos is
> 	     0x0140.  This problem also show up with 64 bit shared objects. The
> 	     data section must also be aligned.  */
> 	  if (!strcmp (current->name, _TEXT)
> 	      || !strcmp (current->name, _DATA))
> 	    {
> 	      bfd_vma pad;
> 	      bfd_vma align;
> 
> 	      sofar = BFD_ALIGN (sofar, 1 << current->alignment_power);
> 
> 	      align = 1 << current->alignment_power;
> 	      pad = abs (current->vma - sofar) % align;
> 
> 	      if (pad)
> 		{
> 		  pad = align - pad;
> 		  sofar += pad;
> 		}
> 	    }
> 	  else
> #else
> 	    {
> 	      sofar = BFD_ALIGN (sofar, 1 << current->alignment_power);
> 	    }
> #endif

It's pretty clear from looking at the original patch introducing this
code:

2001-12-20  Tom Rix  <trix@redhat.com>

	* coffcode.h (coff_compute_section_file_positions): Add special AIX
	loader alignment of text section.

that the #else above should be a #endif, and the #endif should be
removed.

Ian


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