https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70146

--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> ---
We do it for MacOS:

#if TARGET_MACHO
      /* Output the Mach-O "canonical" pic base label name ("Lxx$pb") here.
         This is what will be referenced by the Mach-O PIC subsystem.  */
      if (machopic_should_output_picbase_label () || !label)
        ASM_OUTPUT_LABEL (asm_out_file, MACHOPIC_FUNCTION_BASE_NAME);

      /* When we are restoring the pic base at the site of a nonlocal label,
         and we decided to emit the pic base above, we will still output a
         local label used for calculating the correction offset (even though
         the offset will be 0 in that case).  */
      if (label)
        targetm.asm_out.internal_label (asm_out_file, "L",
                                           CODE_LABEL_NUMBER (label));
#endif

        .text
        .align 4,0x90
        .globl _get_foo
_get_foo:
LFB0:
        call    ___x86.get_pc_thunk.ax
L1$pb:
        movl    L_foo$non_lazy_ptr-L1$pb(%eax), %eax
        ret
LFE0:
        .section __TEXT,__textcoal_nt,coalesced,pure_instructions

We should do something similar for Linux.

Reply via email to