R_X86_64_COPY bug
Fredrick Prashanth John Berchmans
fredrickprashanth@gmail.com
Mon Apr 8 16:51:00 GMT 2013
On Sun, Apr 7, 2013 at 3:46 AM, Florian Weimer <fweimer@redhat.com> wrote:
> On 04/07/2013 03:48 AM, Fredrick Prashanth John Berchmans wrote:
>>
>> A struct with zero length array is defined in a shared library as a global
>> data.
>> A binary links with this shared library and accesses the struct.
>> Because of copy relocation semantics, the binary linking with that
>> library sees(correctly) only the portion of the struct without the
>> zero length array.
>> We understand that it is due to the wrong or apparent size calculation
>> of the struct by GCC and using copy relocation semantics to resolve this
>> shared symbol is causing this problem.
>
>
> This seems to be a bug in GCC:
>
>
> .globl test_dynamic
> .data
> .align 4
> .type test_dynamic, @object
> .size test_dynamic, 4
> test_dynamic:
> .long 6
> .long 1
> .long 2
> .long 3
> .long 4
> .long 5
> .long 6
>
> The .size directive is wrong. I couldn't find anything matching in
> Bugzilla, so you probably should file a new bug.
>
Filed.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56880
> As a workaround, you could declare the struct object in question as static.
> This should disable copy relocation.
>
> --
> Florian Weimer / Red Hat Product Security Team
More information about the Gcc-help
mailing list