https://bugs.llvm.org/show_bug.cgi?id=51181

            Bug ID: 51181
           Summary: Emitted binary code changes when -g is enabled at -O0
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Common Code Generator Code
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected], [email protected]
            Blocks: 37728

The .text section for the following program (transformed_program0.c) changes
after toggling the -g flag.

$ cat transformed_program0.c
int main() {
  goto a;
b:
  return 0;
a:;
}
$
$ clang-trunk -v
clang version 13.0.0 (https://github.com/llvm/llvm-project.git
ab5ac659c81a453a3f58df94f39fe8ba3cd35918)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/cnsun/usr/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
$
$ clang-trunk -O0 transformed_program0.c ; objdump --disassemble
--section=.text a.out > no_g.txt
$ clang-trunk -g -O0 transformed_program0.c ; objdump --disassemble
--section=.text a.out > g.txt
$ diff no_g.txt g.txt
16,17c16,17
<   401033:     49 c7 c0 90 11 40 00    mov    $0x401190,%r8
<   40103a:     48 c7 c1 20 11 40 00    mov    $0x401120,%rcx
---
>   401033:     49 c7 c0 a0 11 40 00    mov    $0x4011a0,%r8
>   40103a:     48 c7 c1 30 11 40 00    mov    $0x401130,%rcx
90,133c90,131
<   40111b:     8b 45 fc                mov    -0x4(%rbp),%eax
<   40111e:     5d                      pop    %rbp
<   40111f:     c3                      retq
<
< 0000000000401120 <__libc_csu_init>:
<   401120:     f3 0f 1e fa             endbr64
<   401124:     41 57                   push   %r15
<   401126:     4c 8d 3d 23 2d 00 00    lea    0x2d23(%rip),%r15        #
403e50 <__frame_dummy_init_array_entry>
<   40112d:     41 56                   push   %r14
<   40112f:     49 89 d6                mov    %rdx,%r14
<   401132:     41 55                   push   %r13
<   401134:     49 89 f5                mov    %rsi,%r13
<   401137:     41 54                   push   %r12
<   401139:     41 89 fc                mov    %edi,%r12d
<   40113c:     55                      push   %rbp
<   40113d:     48 8d 2d 14 2d 00 00    lea    0x2d14(%rip),%rbp        #
403e58 <__do_global_dtors_aux_fini_array_entry>
<   401144:     53                      push   %rbx
<   401145:     4c 29 fd                sub    %r15,%rbp
<   401148:     48 83 ec 08             sub    $0x8,%rsp
<   40114c:     e8 af fe ff ff          callq  401000 <_init>
<   401151:     48 c1 fd 03             sar    $0x3,%rbp
<   401155:     74 1f                   je     401176 <__libc_csu_init+0x56>
<   401157:     31 db                   xor    %ebx,%ebx
<   401159:     0f 1f 80 00 00 00 00    nopl   0x0(%rax)
<   401160:     4c 89 f2                mov    %r14,%rdx
<   401163:     4c 89 ee                mov    %r13,%rsi
<   401166:     44 89 e7                mov    %r12d,%edi
<   401169:     41 ff 14 df             callq  *(%r15,%rbx,8)
<   40116d:     48 83 c3 01             add    $0x1,%rbx
<   401171:     48 39 dd                cmp    %rbx,%rbp
<   401174:     75 ea                   jne    401160 <__libc_csu_init+0x40>
<   401176:     48 83 c4 08             add    $0x8,%rsp
<   40117a:     5b                      pop    %rbx
<   40117b:     5d                      pop    %rbp
<   40117c:     41 5c                   pop    %r12
<   40117e:     41 5d                   pop    %r13
<   401180:     41 5e                   pop    %r14
<   401182:     41 5f                   pop    %r15
<   401184:     c3                      retq
<   401185:     66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)
<   40118c:     00 00 00 00
<
< 0000000000401190 <__libc_csu_fini>:
<   401190:     f3 0f 1e fa             endbr64
---
>   40111b:     e9 00 00 00 00          jmpq   401120 <main+0x10>
>   401120:     8b 45 fc                mov    -0x4(%rbp),%eax
>   401123:     5d                      pop    %rbp
>   401124:     c3                      retq
>   401125:     66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
>   40112c:     00 00 00
>   40112f:     90                      nop
>
> 0000000000401130 <__libc_csu_init>:
>   401130:     f3 0f 1e fa             endbr64
>   401134:     41 57                   push   %r15
>   401136:     4c 8d 3d 13 2d 00 00    lea    0x2d13(%rip),%r15        # 
> 403e50 <__frame_dummy_init_array_entry>
>   40113d:     41 56                   push   %r14
>   40113f:     49 89 d6                mov    %rdx,%r14
>   401142:     41 55                   push   %r13
>   401144:     49 89 f5                mov    %rsi,%r13
>   401147:     41 54                   push   %r12
>   401149:     41 89 fc                mov    %edi,%r12d
>   40114c:     55                      push   %rbp
>   40114d:     48 8d 2d 04 2d 00 00    lea    0x2d04(%rip),%rbp        # 
> 403e58 <__do_global_dtors_aux_fini_array_entry>
>   401154:     53                      push   %rbx
>   401155:     4c 29 fd                sub    %r15,%rbp
>   401158:     48 83 ec 08             sub    $0x8,%rsp
>   40115c:     e8 9f fe ff ff          callq  401000 <_init>
>   401161:     48 c1 fd 03             sar    $0x3,%rbp
>   401165:     74 1f                   je     401186 <__libc_csu_init+0x56>
>   401167:     31 db                   xor    %ebx,%ebx
>   401169:     0f 1f 80 00 00 00 00    nopl   0x0(%rax)
>   401170:     4c 89 f2                mov    %r14,%rdx
>   401173:     4c 89 ee                mov    %r13,%rsi
>   401176:     44 89 e7                mov    %r12d,%edi
>   401179:     41 ff 14 df             callq  *(%r15,%rbx,8)
>   40117d:     48 83 c3 01             add    $0x1,%rbx
>   401181:     48 39 dd                cmp    %rbx,%rbp
>   401184:     75 ea                   jne    401170 <__libc_csu_init+0x40>
>   401186:     48 83 c4 08             add    $0x8,%rsp
>   40118a:     5b                      pop    %rbx
>   40118b:     5d                      pop    %rbp
>   40118c:     41 5c                   pop    %r12
>   40118e:     41 5d                   pop    %r13
>   401190:     41 5e                   pop    %r14
>   401192:     41 5f                   pop    %r15
134a133,138
>   401195:     66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)
>   40119c:     00 00 00 00
>
> 00000000004011a0 <__libc_csu_fini>:
>   4011a0:     f3 0f 1e fa             endbr64
>   4011a4:     c3                      retq


Referenced Bugs:

https://bugs.llvm.org/show_bug.cgi?id=37728
[Bug 37728] [meta] Make llvm passes debug info invariant
-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to