Index: ELF/Writer.cpp =================================================================== --- ELF/Writer.cpp +++ ELF/Writer.cpp @@ -729,12 +729,13 @@ // * It is easy to check if a give branch was taken. // * It is easy two see how similar two ranks are (see getRankProximity). enum RankFlags { - RF_NOT_ADDR_SET = 1 << 18, - RF_NOT_INTERP = 1 << 17, - RF_NOT_ALLOC = 1 << 16, - RF_WRITE = 1 << 15, - RF_EXEC_WRITE = 1 << 14, - RF_EXEC = 1 << 13, + RF_NOT_ADDR_SET = 1 << 19, + RF_NOT_INTERP = 1 << 18, + RF_NOT_ALLOC = 1 << 17, + RF_WRITE = 1 << 16, + RF_EXEC_WRITE = 1 << 15, + RF_EXEC = 1 << 14, + RF_EXEC_HOT = 1 << 13, RF_RODATA = 1 << 12, RF_NON_TLS_BSS = 1 << 11, RF_NON_TLS_BSS_RO = 1 << 10, @@ -787,8 +788,12 @@ if (IsExec) { if (IsWrite) Rank |= RF_EXEC_WRITE; - else - Rank |= RF_EXEC; + else { + if (isSectionPrefix(".text.hot.", Sec->Name)) + Rank |= RF_EXEC_HOT; + else + Rank |= RF_EXEC; + } } else if (IsWrite) { Rank |= RF_WRITE; } else if (Sec->Type == SHT_PROGBITS) { Index: test/ELF/text-section-prefix.s =================================================================== --- test/ELF/text-section-prefix.s +++ test/ELF/text-section-prefix.s @@ -7,8 +7,8 @@ # RUN: ld.lld -z nokeep-text-section-prefix %t -o %t4 # RUN: llvm-readelf -l %t4 | FileCheck --check-prefix=CHECKNO %s -# CHECK: .text # CHECK: .text.hot +# CHECK: .text # CHECK: .text.startup # CHECK: .text.exit # CHECK: .text.unlikely