[cfe-users] how clang merge strings in .rodata section

Jian, Xu via cfe-users cfe-users at lists.llvm.org
Wed Jul 4 18:18:59 PDT 2018


Hi,
The following c source code abc.c:
#include <stdio.h>
int g_val=10;
const char *g_str="abc";
const char *g_str1="c";
int main(void)
{
    printf("%s %s: %d\n",g_str,g_str1,g_val);
    return 0;
}

When compile with "clang abc.c -o abc" then dump .rodata section:
# readelf -p .rodata abc

String dump of section '.rodata':
  [     0]  abc
 [     4]  %s %s: %d

When compile with "gcc abc.c -o abc" then dump .rodata section:
$ readelf -p .rodata abc

String dump of section '.rodata':
  [    10]  abc
  [    14]  c
  [    16]  %s %s: %d^J

clang is able to merge short string ("c") into the tail of a long string ("abc"), while gcc will not.
Does anybody know how to disable this behavior (make it similar to gcc) ?
Thanks.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20180705/1c1134a4/attachment.html>


More information about the cfe-users mailing list