diff options
author | John van Groningen | 2013-12-03 14:21:14 +0000 |
---|---|---|
committer | John van Groningen | 2013-12-03 14:21:14 +0000 |
commit | 0909078590ad8b1145d8776ef8057489ff45321d (patch) | |
tree | d21aeeff77dfe240bcccc49c6488a2668dcd8292 | |
parent | implement position independent code generation on 64 bit linux (diff) |
implement position independent code generation on 64 bit linux (fix CHAR descriptor)
-rw-r--r-- | cgcode.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -1168,9 +1168,18 @@ static INSTRUCTION_GRAPH char_descriptor_graph (void) if (!parallel_flag && last_CHAR_descriptor_block==last_block) graph=last_CHAR_descriptor_graph; else { +#if defined (G_A64) && defined (LINUX) + if (rts_got_flag){ + if (CHAR_label==NULL) + CHAR_label=enter_label ("CHAR_0",IMPORT_LABEL | DATA_LABEL | USE_GOT_LABEL); + graph=g_lea (CHAR_label); + } else +#endif + { if (CHAR_label==NULL) CHAR_label=enter_label ("CHAR",IMPORT_LABEL | DATA_LABEL); graph=g_load_des_i (CHAR_label,0); + } if (!parallel_flag){ last_CHAR_descriptor_graph=graph; |