Re: Reserving specified size of RUNPATH entry in the dynamic section during linking

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

 



I used to do this by padding initially with extra dots and slashes.

(On Mac, the linker had a flag -headerpad_max_install_names that did
something similar.)


On Sun, Nov 28, 2021, 06:32 Jacob Kroon via Gcc-help <gcc-help@xxxxxxxxxxx>
wrote:

> On 11/28/21 12:44, Florian Weimer wrote:
> > * Jacob Kroon via Gcc-help:
> >
> >> As part of an effort to make binaries reproducible regardless of their
> >> build path, I need to enforce the same size of the RUNPATH entry in the
> >> dynamic section during linking, even though I don't fill it completely.
> >> Is it possible to give some flag to gnu ld that allows me to set it to a
> >> specific size ? Or is there a way to patch the elf file after linking,
> >> so that the entry has a specified size ?
> >
> > Do you want to allocate specific size so that you can patch in a
> > different value later?
> >
>
> Yes exactly, but see below.
>
> > The RUNPATH strings are in the string table, so it's necessary to
> > allocate space there, and be able to find it during patching.
> >
> > Solaris offers this mechanism:
> >
> > | DT_SUNW_STRPAD
> > |
> > |     The total size, in bytes, of the unused reserved space at the end
> of
> > |     the dynamic string table. If DT_SUNW_STRPAD is not present in an
> > |     object, no reserved space is available.
> >
> > Would that help in your case as well?
> >
>
> The problem is that for two different build I pass two different
> -Wl,--rpath=<path>, and they are of different length. So I'd like to
> reserve a maximum size, at link-time, which becomes the same in both
> builds, so that when I later remove the rpath's, the binaries become
> identical.
>
> Jacob
>



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux