This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 2/2] Add a testcase for copy reloc against protected data
- From: "Carlos O'Donell" <carlos at redhat dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>, Joseph Myers <joseph at codesourcery dot com>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Wed, 01 Apr 2015 15:51:38 -0400
- Subject: Re: [PATCH 2/2] Add a testcase for copy reloc against protected data
- Authentication-results: sourceware.org; auth=none
- References: <20150306002424 dot GA17971 at intel dot com> <alpine dot DEB dot 2 dot 10 dot 1503061903280 dot 24477 at digraph dot polyomino dot org dot uk> <CAMe9rOpROBqX81gnjQuYn3dVBquSvPsMA9oWE5F+8csknWf66g at mail dot gmail dot com> <alpine dot DEB dot 2 dot 10 dot 1503062221230 dot 9654 at digraph dot polyomino dot org dot uk> <CAMe9rOrA04xcDvirALYTpqrKqF8RQ69vMNKu-xTYVaF1oFNj_g at mail dot gmail dot com> <alpine dot DEB dot 2 dot 10 dot 1503062305290 dot 9654 at digraph dot polyomino dot org dot uk> <CAMe9rOoiKL7xOC0vdBgBR_djA7E3pSS5R73Ge_+gfYVJao5G1g at mail dot gmail dot com> <CAMe9rOqw-ynoj9wCqT0CbLaVGvFsdq_B4VfqoQAJ26PYAHL+aw at mail dot gmail dot com>
On 03/31/2015 08:26 AM, H.J. Lu wrote:
> On Fri, Mar 6, 2015 at 3:24 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> On Fri, Mar 6, 2015 at 3:07 PM, Joseph Myers <joseph@codesourcery.com> wrote:
>>> On Fri, 6 Mar 2015, H.J. Lu wrote:
>>>
>>>> On Fri, Mar 6, 2015 at 2:23 PM, Joseph Myers <joseph@codesourcery.com> wrote:
>>>>> On Fri, 6 Mar 2015, H.J. Lu wrote:
>>>>>
>>>>>>> Suppose I configure / build with new binutils but a GCC version without
>>>>>>> your patches. What will the results be? That the tests don't build /
>>>>>>> run? That they build / run but fail (best avoided if possible)? In
>>>>>>> either case, you need clear documentation for architecture maintainers on
>>>>>>> what GCC versions (*not* requiring any uncommitted GCC patches) must be
>>>>>>> used to identify whether architecture-specific changes are needed and to
>>>>>>> test such changes.
>>>>>>>
>>>>>>
>>>>>> I will submit a separate patch to address GCC issue.
>>>>>
>>>>> I don't think these tests should go in glibc until:
>>>>
>>>> Which tests were you talking about? My copy relocation
>>>> tests work with any GCC versions, with and without the fix
>>>> for
>>>>
>>>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65248
>>>
>>> Thanks for the explanation. In
>>> <https://sourceware.org/ml/libc-alpha/2015-03/msg00170.html> you
>>> originally sent patches for all three of GCC, binutils, glibc, so giving
>>> the impression there might be dependencies between these patches. If the
>>> tests work with any GCC version (i.e. fail if the architecture hasn't been
>>> fixed, pass if it has been fixed) then GCC changes shouldn't need to block
>>> them.
>>>
>>
>> To get copy reloc against protected data symbol working, you
>> need to fix glibc, binutils and GCC. My glibc tests work around
>> the GCC bug so that you don't need the fixed GCC to build/test
>> glibc.
>
> I checked in my testcase patch. I didn't close
>
> https://sourceware.org/bugzilla/show_bug.cgi?id=17711
>
> since only x86 is fixed. To fix it on a target with copy reloc, you need to
> properly handle ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA like
> x86. You also need to fix linker if tests fail.
>
I assume when you say x86 you mean all of the variants of that machine.
Your test fail for me on F21 x86_64 with gcc 4.9.2 and ld 2.24 (Fedora
versions). I haven't looked into this, but hopefully we'll get Fedora--
specific build bots up to help with this kind of testing.
XPASS: conform/ISO11/complex.h/conform
XPASS: conform/ISO11/stdalign.h/conform
XPASS: conform/ISO11/stdnoreturn.h/conform
FAIL: elf/tst-protected1a
FAIL: elf/tst-protected1b
UNRESOLVED: timezone/testdata/UTC
Summary of test results:
2 FAIL
2199 PASS
1 UNRESOLVED
189 XFAIL
3 XPASS
[carlos@koi build]$ cat glibc/elf/tst-protected1a.out
`protected1' in main and moda doesn't have same address
`protected3' in main and moda doesn't have same address
`protected1' in main doesn't have the updated value
`protected1' in moda has the wrong value
`protected3' in main doesn't have the updated value
`protected3' in main doesn't have the updated value
[carlos@koi build]$ cat glibc/elf/tst-protected1b.out
`protected3' in main and modb doesn't have same address
`protected3' in main doesn't have the updated value
What's wrong?
Cheers,
Carlos.