OSDN Git Service

[bpf] fix a bug which causes incorrect big endian reloc fixup
authorAlexei Starovoitov <alexei.starovoitov@gmail.com>
Fri, 5 May 2017 18:05:00 +0000 (18:05 +0000)
committerAlexei Starovoitov <alexei.starovoitov@gmail.com>
Fri, 5 May 2017 18:05:00 +0000 (18:05 +0000)
  o Add bpfeb support in BPF dwarfdump unit test case

Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@fb.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302265 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp
test/CodeGen/BPF/dwarfdump.ll

index 1f35517..80357a6 100644 (file)
@@ -70,7 +70,7 @@ void BPFAsmBackend::applyFixup(const MCFixup &Fixup, char *Data,
     unsigned Size = Fixup.getKind() == FK_Data_4 ? 4 : 8;
 
     for (unsigned i = 0; i != Size; ++i) {
-      unsigned Idx = IsLittleEndian ? i : Size - i;
+      unsigned Idx = IsLittleEndian ? i : Size - i - 1;
       Data[Fixup.getOffset() + Idx] = uint8_t(Value >> (i * 8));
     }
   } else {
index 7ae64df..6a69130 100644 (file)
@@ -1,5 +1,7 @@
 ; RUN: llc -O2 -march=bpfel %s -o %t -filetype=obj
 ; RUN: llvm-dwarfdump -debug-dump=line %t | FileCheck %s
+; RUN: llc -O2 -march=bpfeb %s -o %t -filetype=obj
+; RUN: llvm-dwarfdump -debug-dump=line %t | FileCheck %s
 
 source_filename = "testprog.c"
 target datalayout = "e-m:e-p:64:64-i64:64-n32:64-S128"