Issue 107830
Summary [BOLT] "_end" symbol is relocated incorrectly
Labels
Assignees
Reporter ARG-NK
    BOLT relocates the linker script symbol "_end" to a new area, thus __bss_start and _end does not represent the actual bss section size anymore. 

example: 
Output ( readelf -S -W --dyn-sym lib.so) 
 
 Bss section size = **0x2480d0**
 [27] .bss              NOBITS 00000000011f89c0 11f89c0 **2480d0** 00  WA  0   0 16
 
   379: **00000000025cd690     0 NOTYPE  GLOBAL DEFAULT  ABS _end**
   440: 0000000001440a90     0 NOTYPE  GLOBAL DEFAULT   27 __end__
   465: 00000000011f89c0     0 NOTYPE  GLOBAL DEFAULT   27 __bss_start__
   492: 0000000001440a90     0 NOTYPE  GLOBAL DEFAULT   27 _bss_end__
   565: **00000000011f89c0     0 NOTYPE  GLOBAL DEFAULT   27 __bss_start**
   644: 0000000001440a90     0 NOTYPE  GLOBAL DEFAULT   27 __bss_end__
   
 Bss section size =  _end - __bss_start  = 0x25cd690 - 0x11f89c0 = 0x13D 4CD0 (Incorrect size)
   Bss section size = _bss_end__ - __bss_start = 0x1440a90 - 0x11f89c0 = 0x24 80D0 (correct size)

(Note: this change was introduced in this commit:
https://github.com/llvm/llvm-project/commit/3a0d894fafddace75f03fa7df25022cadbe2dffc)

_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to