[llvm] r181864 - ELFRelocationEntry::operator<(): Try to stabilize the order. r_offset was insufficient to sort Relocs.

NAKAMURA Takumi geek4civic at gmail.com
Tue May 14 19:23:56 PDT 2013


Rafael, could you please reconfirm the sort order in r_offset, Type and Index?

2013/5/15 NAKAMURA Takumi <geek4civic at gmail.com>:
> Author: chapuni
> Date: Tue May 14 21:16:23 2013
> New Revision: 181864
>
> URL: http://llvm.org/viewvc/llvm-project?rev=181864&view=rev
> Log:
> ELFRelocationEntry::operator<(): Try to stabilize the order. r_offset was insufficient to sort Relocs.
>
> It should fix llvm/test/CodeGen/ARM/ehabi-mc-compact-pr*.ll on some hosts.
>
>   RELOCATION RECORDS FOR [.ARM.exidx]:
>   0 R_ARM_PREL31 .text
>   0 R_ARM_NONE __aeabi_unwind_cpp_pr0
>
> FIXME: I am not sure of the directions of extra comparators, in Type and Index.
> For now, they are different from the direction in r_offset.
>
> Modified:
>     llvm/trunk/include/llvm/MC/MCELFObjectWriter.h
>
> Modified: llvm/trunk/include/llvm/MC/MCELFObjectWriter.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCELFObjectWriter.h?rev=181864&r1=181863&r2=181864&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCELFObjectWriter.h (original)
> +++ llvm/trunk/include/llvm/MC/MCELFObjectWriter.h Tue May 14 21:16:23 2013
> @@ -45,7 +45,14 @@ struct ELFRelocationEntry {
>
>    // Support lexicographic sorting.
>    bool operator<(const ELFRelocationEntry &RE) const {
> -    return RE.r_offset < r_offset;
> +    if (RE.r_offset != r_offset)
> +      return RE.r_offset < r_offset;
> +    if (Type != RE.Type)
> +      return Type < RE.Type;
> +    if (Index != RE.Index)
> +      return Index < RE.Index;
> +    llvm_unreachable("ELFRelocs might be unstable!");
> +    return 0;
>    }
>  };
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list