This is the mail archive of the 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: [MIPS] Check info->executable to create DT_MIPS_RLD_MAP

On 06/21/2013 05:00 PM, Chao-Ying Fu wrote:
Hi All,

   When using "-pie", LD doesn't create the DT_MIPS_RLD_MAP entry,
because LD checks "!info->shared" and the "-pie" flag sets "info->shared" to true.
Note that LD checks "info->executable" to create DT_DEBUG, and
creating DT_MIPS_RLD_MAP should be similar to creating DT_DEBUG.
       /* SGI object has the equivalence of DT_DEBUG in the
          DT_MIPS_RLD_MAP entry.  This must come first because glibc
          only fills in DT_MIPS_RLD_MAP (not DT_DEBUG) and some tools
          may only look at the first one they see.  */
       if (!info->shared
           && !MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_RLD_MAP, 0))
         return FALSE;

Probably you want info->executable here too.

I have tried simple programs with -pie and they seem to work as is. What failures are you seeing? Does the libgcc unwinder use this?

In any event, you could test changing this.

David Daney

       /* The DT_DEBUG entry may be filled in by the dynamic linker and
          used by the debugger.  */
       if (info->executable
           && !SGI_COMPAT (output_bfd)
           && !MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_DEBUG, 0))
         return FALSE;

   Any feedback about checking "info->executable" to create DT_MIPS_RLD_MAP and related stuffs?
Thanks a lot!



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