Should elf/tst-dlopen-aout.c fail when compiled as PIE?
Commit Message
Hi Pail,
You are the author of elf/tst-dlopen-aout.c. Should it fail
when it is compiled as PIE? With this patch:
selinux-enabled := $(shell cat /selinux/enforce 2> /dev/null)
I got
[hjl@gnu-6 build-x86_64-linux]$ ./elf/tst-dlopen-aout
dlopen unexpectedly succeeded
[hjl@gnu-6 build-x86_64-linux]$
Comments
It's clear from the content of the test that it cannot test what it's
intended to test unless the file it passes to dlopen it an ET_EXEC. So if
you want to build the test itself as PIE, then you need to change it to
open some file other than itself.
On Fri, Mar 6, 2015 at 3:00 PM, Roland McGrath <roland@hack.frob.com> wrote:
> It's clear from the content of the test that it cannot test what it's
> intended to test unless the file it passes to dlopen it an ET_EXEC. So if
> you want to build the test itself as PIE, then you need to change it to
> open some file other than itself.
Thanks. I will handle it properly.
On Fri, Mar 6, 2015 at 3:05 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Fri, Mar 6, 2015 at 3:00 PM, Roland McGrath <roland@hack.frob.com> wrote:
>> It's clear from the content of the test that it cannot test what it's
>> intended to test unless the file it passes to dlopen it an ET_EXEC. So if
>> you want to build the test itself as PIE, then you need to change it to
>> open some file other than itself.
>
> Thanks. I will handle it properly.
I think adding
CFLAGS-tst-dlopen-aout.c += -fno-pie
or some such may be the right fix.
You want to have ET_EXEC, and it's easiest to guarantee ET_EXEC if you
build it yourself, and the test itself will make a good ET_EXEC to
test with -- no reason to build an extra ET_EXEC.
On 06 Mar 2015 15:21, Paul Pluzhnikov wrote:
> On Fri, Mar 6, 2015 at 3:05 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> > On Fri, Mar 6, 2015 at 3:00 PM, Roland McGrath <roland@hack.frob.com> wrote:
> >> It's clear from the content of the test that it cannot test what it's
> >> intended to test unless the file it passes to dlopen it an ET_EXEC. So if
> >> you want to build the test itself as PIE, then you need to change it to
> >> open some file other than itself.
> >
> > Thanks. I will handle it properly.
>
> I think adding
>
> CFLAGS-tst-dlopen-aout.c += -fno-pie
>
> or some such may be the right fix.
it should be fine to compile as PIE as long as the final link isn't:
LDFLAGS-tst-dlopen-aout.c = -no-pie
-mike
@@ -150,6 +150,8 @@ tests += loadtest restest1 preloadtest loadfail
multiload origtest resolvfail \
# reldep9
ifeq ($(build-hardcoded-path-in-tests),yes)
tests += tst-dlopen-aout
+tests-pie += tst-dlopen-aout
+CFLAGS-tst-dlopen-aout.c += $(pie-ccflag)
endif
test-srcs = tst-pathopt