Heya, Danny Milosavljevic <dan...@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’.