tech-toolchain archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: $ORIGIN
In article <20140125080410.GA11641%netbsd.org@localhost>,
David Holland <dholland-tech%netbsd.org@localhost> wrote:
>So, a large part of the reason $ORIGIN still doesn't work is that we
>have believed that it isn't possible to identify binaries that use
>$ORIGIN from within the kernel, so supporting it fully would add
>overhead to all execs.
>
>However, while trawling through elf.h tonight looking for something
>else, I noticed this:
>
> /* Flag values for DT_FLAGS */
> #define DF_ORIGIN 0x00000001 /* uses $ORIGIN */
>
>and it appears with some quick experimentation that with at least the
>amd64 toolchain, this flag appears (in a flags entry in the dynamic
>section) if and only if "-z origin" is given when linking:
>
> % gcc foo.o -o foo
> % readelf -d foo | grep FLAG
> Exit 1
> % gcc -Wl,-z,origin foo.o -o foo
> % readelf -d foo | grep FLAG
> 0x000000006ffffffb (FLAGS_1) Flags: ORIGIN
> %
>
>Which seems to me to mean that we can (with only a bit of fuss) find
>this flag during exec and do the (somewhat) expensive extra lookups
>for supporting $ORIGIN only if it's found.
>
>Am I missing something?
The problem is that we don't have a reliable name -> inode mapping. It mostly
does not have to do with performance.
christos
Home |
Main Index |
Thread Index |
Old Index