* Rename existing relocations to be more specific
* Add relocations for refernces to non-lazy darwin stubs and implement
them correctly.
With this change, we can correctly references external globals, and now
all but two UnitTests and all but 1 Regression/C tests pass.
More importantly, bugpoint-jit will start giving us useful testcases,
instead of always telling us that references to external globals don't
work :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18222 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/PowerPC/PPCRelocations.h b/lib/Target/PowerPC/PPCRelocations.h
index 54de9a6..a3eb760 100644
--- a/lib/Target/PowerPC/PPCRelocations.h
+++ b/lib/Target/PowerPC/PPCRelocations.h
@@ -22,15 +22,29 @@
// reloc_pcrel_bx - PC relative relocation, for the b or bl instructions.
reloc_pcrel_bx,
- // reloc_absolute_loadhi - Absolute relocation, for the loadhi instruction
+ // reloc_absolute_high - Absolute relocation, for the loadhi instruction
// (which is really addis). Add the high 16-bits of the specified global
- // address into the immediate field of the addis.
- reloc_absolute_loadhi,
+ // address into the low 16-bits of the instruction.
+ reloc_absolute_high,
- // reloc_absolute_la - Absolute relocation, for the la instruction (which
+ // reloc_absolute_low - Absolute relocation, for the la instruction (which
// is really an addi). Add the low 16-bits of teh specified global
- // address into the immediate field of the addi.
- reloc_absolute_la,
+ // address into the low 16-bits of the instruction.
+ reloc_absolute_low,
+
+ // reloc_absolute_ptr_high - Absolute relocation for references to lazy
+ // pointer stubs. In this case, the relocated instruction should be
+ // relocated to point to a POINTER to the indicated global. The low-16
+ // bits of the instruction are rewritten with the high 16-bits of the
+ // address of the pointer.
+ reloc_absolute_ptr_high,
+
+ // reloc_absolute_ptr_low - Absolute relocation for references to lazy
+ // pointer stubs. In this case, the relocated instruction should be
+ // relocated to point to a POINTER to the indicated global. The low-16
+ // bits of the instruction are rewritten with the low 16-bits of the
+ // address of the pointer.
+ reloc_absolute_ptr_low,
};
}
}