GNU bug report logs -
#30820
Chunked store references in compiled code break grafting (again)
Previous Next
Reported by: ludo <at> gnu.org (Ludovic Courtès)
Date: Wed, 14 Mar 2018 15:48:01 UTC
Severity: serious
Merged with 30395
Done: ludo <at> gnu.org (Ludovic Courtès)
Bug is archived. No further changes may be made.
Full log
Message #33 received at 30820 <at> debbugs.gnu.org (full text, mbox):
Heya,
Danny Milosavljevic <dannym <at> scratchpost.org> skribis:
>> The second issue is that the patch only ever worked with literal
>> strings. It does not “see” strings in constant arrays like the ‘str’
>> array in the example above.
>>
>> The gconv-module file name mentioned in the first message in this bug
>> report is an example of a string assigned to a static array, in
>> iconv/gconv_conf.c:
>>
>> /* This is the default path where we look for module lists. */
>> static const char default_gconv_path[] = GCONV_PATH;
>
> I don't understand why this is a problem. Grafting would just
> mutate default_gconv_path, right? Who cares how the runtime memcpy
> works (if there's no literal as source)?
At compile-time, GCC finds out that ‘default_gconv_path’ is used only
in one place, in an strcpy call. Thus, it chooses to use the movabs
optimization, and as a consequence, to split ‘default_gconv_path’ in
8-byte chunks. It can do so because it’s ‘static’.
Ludo’.
This bug report was last modified 7 years and 120 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.