---
gcc/config/aarch64/aarch64-protos.h | 7 ++++---
gcc/config/aarch64/aarch64.c | 10 +++++-----
2 files changed, 9 insertions(+), 8 deletions(-)
@@ -49,12 +49,13 @@ enum aarch64_symbol_context
This corresponds to the small code model of the compiler.
- SYMBOL_SMALL_GOT: Similar to the one above but this
+ SYMBOL_SMALL_GOT_4G: Similar to the one above but this
gives us the GOT entry of the symbol being referred to :
Thus calculating the GOT entry for foo is done using the
following sequence of instructions. The ADRP instruction
gets us to the page containing the GOT entry of the symbol
- and the got_lo12 gets us the actual offset in it.
+ and the got_lo12 gets us the actual offset in it, together
+ the base and offset, we can address 4G size GOT table.
adrp x0, :got:foo
ldr x0, [x0, :gotoff_lo12:foo]
@@ -94,7 +95,7 @@ enum aarch64_symbol_context
enum aarch64_symbol_type
{
SYMBOL_SMALL_ABSOLUTE,
- SYMBOL_SMALL_GOT,
+ SYMBOL_SMALL_GOT_4G,
SYMBOL_SMALL_TLSGD,
SYMBOL_SMALL_TLSDESC,
SYMBOL_SMALL_GOTTPREL,
@@ -814,7 +814,7 @@ aarch64_load_symref_appropriately (rtx dest, rtx imm,
emit_insn (gen_rtx_SET (dest, imm));
return;
- case SYMBOL_SMALL_GOT:
+ case SYMBOL_SMALL_GOT_4G:
{
/* In ILP32, the mode of dest can be either SImode or DImode,
while the got entry is always of SImode size. The mode of
@@ -1466,7 +1466,7 @@ aarch64_expand_mov_immediate (rtx dest, rtx imm)
case SYMBOL_SMALL_TLSGD:
case SYMBOL_SMALL_TLSDESC:
case SYMBOL_SMALL_GOTTPREL:
- case SYMBOL_SMALL_GOT:
+ case SYMBOL_SMALL_GOT_4G:
case SYMBOL_TINY_GOT:
if (offset != const0_rtx)
{
@@ -4333,7 +4333,7 @@ aarch64_print_operand (FILE *f, rtx x, char code)
switch (aarch64_classify_symbolic_expression (x, SYMBOL_CONTEXT_ADR))
{
- case SYMBOL_SMALL_GOT:
+ case SYMBOL_SMALL_GOT_4G:
asm_fprintf (asm_out_file, ":got:");
break;
@@ -4366,7 +4366,7 @@ aarch64_print_operand (FILE *f, rtx x, char code)
case 'L':
switch (aarch64_classify_symbolic_expression (x, SYMBOL_CONTEXT_ADR))
{
- case SYMBOL_SMALL_GOT:
+ case SYMBOL_SMALL_GOT_4G:
asm_fprintf (asm_out_file, ":lo12:");
break;
@@ -7377,7 +7377,7 @@ aarch64_classify_symbol (rtx x, rtx offset,
case AARCH64_CMODEL_SMALL_PIC:
if (!aarch64_symbol_binds_local_p (x))
- return SYMBOL_SMALL_GOT;
+ return SYMBOL_SMALL_GOT_4G;
return SYMBOL_SMALL_ABSOLUTE;
default:
--
2.1.0