在 2022/7/19 下午9:08, Lulu Cheng 写道:
1. The original LA macro instruction is split into two instructions to
    obtain the address of the symbol if enable '-mexplicit-relocs'.
2. Currently, '-mcmodel=' only supports 'normal' mode, because other mode
    behaviors are not yet determined. This function is gradually improved
    by the subsequent handling.
3. Modify the method that calls global functions. Changed from 'la.global + 
jirl'
    to 'bl'.
4. Some R_LARCH_64 in section .eh_frame will to generate  R_LARCH_NONE, we
    change ASM_PREFERRED_EH_DATA_FORMAT from 'WD_EH_PE_absptr' to
    'WD_EH_PE_pcrel | DW_EH_PE_sdata4' then relocation to R_LARCH_32_PCREL
    from R_LARCH_64 in setction .eh_frame and not generate dynamic relocation
    for R_LARCH_32_PCREL.

This new symbol loading method not support by upstream binutils yet,
this GCC port requires the following patches applied to binutils to build.

https://sourceware.org/pipermail/binutils/2022-July/121849.html
https://sourceware.org/pipermail/binutils/2022-July/121850.html
https://sourceware.org/pipermail/binutils/2022-July/121851.html
https://sourceware.org/pipermail/binutils/2022-July/121852.html
https://sourceware.org/pipermail/binutils/2022-July/121853.html

Lulu Cheng (2):
   LoongArch: Modify the method of obtaining symbolic addresses.
   LoongArch: Modify the definition of the ASM_PREFERRED_EH_DATA_FORMAT
     macro.

  .../config/loongarch/loongarch-common.cc      |   1 +
  gcc/config/loongarch/constraints.md           |  24 +-
  gcc/config/loongarch/genopts/loongarch.opt.in |   4 +
  gcc/config/loongarch/loongarch-protos.h       |   9 +-
  gcc/config/loongarch/loongarch.cc             | 660 +++++++++++++-----
  gcc/config/loongarch/loongarch.h              |   4 +-
  gcc/config/loongarch/loongarch.md             | 401 +++--------
  gcc/config/loongarch/loongarch.opt            |   4 +
  gcc/config/loongarch/predicates.md            |  56 +-
  9 files changed, 629 insertions(+), 534 deletions(-)


Reply via email to