mbox series

[v2,0/6] Add DLL import/export implementation to AArch64

Message ID DBBPR83MB06136C2655EA901E12B701A3F8FB2@DBBPR83MB0613.EURPRD83.prod.outlook.com
Headers show
Series Add DLL import/export implementation to AArch64 | expand

Message

Evgeny Karpov June 7, 2024, 9:44 a.m. UTC
Hello,

Thank you for reviewing v1!
v2 addresses all comments on v1.

Changes in v2:
- Move winnt.h and winnt-dll.h to config.gcc.
- Resolve the issue with GCC GC in winnt-dll.cc.
- Add definitions for GOT_ALIAS_SET, PE_COFF_EXTERN_DECL_SHOULD_BE_LEGITIMIZED, and HAVE_64BIT_POINTERS to cygming.h.
- Replace intermediate functions for PECOFF with ifdef checks in ix86.
- Update the copyright date in winnt-dll.cc.
- Correct the style.
- Rebase from 7th June 2024

Regards,
Evgeny

Evgeny Karpov (6):
  Move mingw_* declarations to the mingw folder
  Extract ix86 dllimport implementation to mingw
  Rename functions for reuse in AArch64
  aarch64: Add selectany attribute handling
  Adjust DLL import/export implementation for AArch64
  aarch64: Add DLL import/export to AArch64 target

 gcc/config.gcc                      |  20 ++-
 gcc/config/aarch64/aarch64-protos.h |   5 -
 gcc/config/aarch64/aarch64.cc       |  42 ++++-
 gcc/config/aarch64/cygming.h        |  33 +++-
 gcc/config/i386/cygming.h           |  16 +-
 gcc/config/i386/i386-expand.cc      |   4 +-
 gcc/config/i386/i386-expand.h       |   2 -
 gcc/config/i386/i386-protos.h       |  10 --
 gcc/config/i386/i386.cc             | 205 ++----------------------
 gcc/config/i386/i386.h              |   2 +
 gcc/config/mingw/mingw32.h          |   2 +-
 gcc/config/mingw/t-cygming          |   6 +
 gcc/config/mingw/winnt-dll.cc       | 231 ++++++++++++++++++++++++++++
 gcc/config/mingw/winnt-dll.h        |  30 ++++
 gcc/config/mingw/winnt.cc           |  10 +-
 gcc/config/mingw/winnt.h            |  38 +++++
 16 files changed, 423 insertions(+), 233 deletions(-)
 create mode 100644 gcc/config/mingw/winnt-dll.cc
 create mode 100644 gcc/config/mingw/winnt-dll.h
 create mode 100644 gcc/config/mingw/winnt.h

Comments

Evgeny Karpov June 8, 2024, 1:01 p.m. UTC | #1
I am resubmitting the patch series without changes to the patchwork due to an issue with the mail client in the previous submission.
https://gcc.gnu.org/pipermail/gcc-patches/2024-June/653894.html
https://gcc.gnu.org/pipermail/gcc-patches/2024-June/653952.html

Regards,
Evgeny

Evgeny Karpov (6):
  Move mingw_* declarations to the mingw folder
  Extract ix86 dllimport implementation to mingw
  Rename functions for reuse in AArch64
  aarch64: Add selectany attribute handling
  Adjust DLL import/export implementation for AArch64
  aarch64: Add DLL import/export to AArch64 target

 gcc/config.gcc                      |  20 ++-
 gcc/config/aarch64/aarch64-protos.h |   5 -
 gcc/config/aarch64/aarch64.cc       |  42 ++++-
 gcc/config/aarch64/cygming.h        |  33 +++-
 gcc/config/i386/cygming.h           |  16 +-
 gcc/config/i386/i386-expand.cc      |   4 +-
 gcc/config/i386/i386-expand.h       |   2 -
 gcc/config/i386/i386-protos.h       |  10 --
 gcc/config/i386/i386.cc             | 205 ++----------------------
 gcc/config/i386/i386.h              |   2 +
 gcc/config/mingw/mingw32.h          |   2 +-
 gcc/config/mingw/t-cygming          |   6 +
 gcc/config/mingw/winnt-dll.cc       | 231 ++++++++++++++++++++++++++++
 gcc/config/mingw/winnt-dll.h        |  30 ++++
 gcc/config/mingw/winnt.cc           |  10 +-
 gcc/config/mingw/winnt.h            |  38 +++++
 16 files changed, 423 insertions(+), 233 deletions(-)
 create mode 100644 gcc/config/mingw/winnt-dll.cc
 create mode 100644 gcc/config/mingw/winnt-dll.h
 create mode 100644 gcc/config/mingw/winnt.h
Evgeny Karpov June 10, 2024, 9:22 a.m. UTC | #2
The patch series has been successfully verified by patchwork,
after resolving the issue with the mailing client.
https://patchwork.sourceware.org/project/gcc/list/?series=34865

The x86_64-w64-mingw32 build has been tested, and no regressions 
have been detected after applying the patch series.
https://github.com/Windows-on-ARM-Experiments/mingw-woarm64-build/actions/runs/9417869213

The patch series has been approved by the x64 and mingw maintainers. 

Richard, could we proceed with merging the patch series? Thanks.

Regards,
Evgeny
Andrew Pinski June 26, 2024, 3:55 p.m. UTC | #3
On Fri, Jun 7, 2024 at 2:45 AM Evgeny Karpov
<Evgeny.Karpov@microsoft.com> wrote:
>
> Hello,
>
> Thank you for reviewing v1!
> v2 addresses all comments on v1.
>
> Changes in v2:
> - Move winnt.h and winnt-dll.h to config.gcc.
> - Resolve the issue with GCC GC in winnt-dll.cc.
> - Add definitions for GOT_ALIAS_SET, PE_COFF_EXTERN_DECL_SHOULD_BE_LEGITIMIZED, and HAVE_64BIT_POINTERS to cygming.h.
> - Replace intermediate functions for PECOFF with ifdef checks in ix86.
> - Update the copyright date in winnt-dll.cc.
> - Correct the style.
> - Rebase from 7th June 2024

I think this caused profilebootstrap failure on x86_64-linux-gnu.
I notice the definition of GOT_ALIAS_SET for all non mingw targets is
now just -1. That seems very wrong to me.
It was originally:
```
alias_set_type
x86_GOT_alias_set (void)
{
  static alias_set_type set = -1;
  if (set == -1)
    set = new_alias_set ();
  return set;
}
```
And GOT_ALIAS_SET is used in more than COFF areas. Can you please fix
this definition?

Thanks,
Andrew Pinski


>
> Regards,
> Evgeny
>
> Evgeny Karpov (6):
>   Move mingw_* declarations to the mingw folder
>   Extract ix86 dllimport implementation to mingw
>   Rename functions for reuse in AArch64
>   aarch64: Add selectany attribute handling
>   Adjust DLL import/export implementation for AArch64
>   aarch64: Add DLL import/export to AArch64 target
>
>  gcc/config.gcc                      |  20 ++-
>  gcc/config/aarch64/aarch64-protos.h |   5 -
>  gcc/config/aarch64/aarch64.cc       |  42 ++++-
>  gcc/config/aarch64/cygming.h        |  33 +++-
>  gcc/config/i386/cygming.h           |  16 +-
>  gcc/config/i386/i386-expand.cc      |   4 +-
>  gcc/config/i386/i386-expand.h       |   2 -
>  gcc/config/i386/i386-protos.h       |  10 --
>  gcc/config/i386/i386.cc             | 205 ++----------------------
>  gcc/config/i386/i386.h              |   2 +
>  gcc/config/mingw/mingw32.h          |   2 +-
>  gcc/config/mingw/t-cygming          |   6 +
>  gcc/config/mingw/winnt-dll.cc       | 231 ++++++++++++++++++++++++++++
>  gcc/config/mingw/winnt-dll.h        |  30 ++++
>  gcc/config/mingw/winnt.cc           |  10 +-
>  gcc/config/mingw/winnt.h            |  38 +++++
>  16 files changed, 423 insertions(+), 233 deletions(-)
>  create mode 100644 gcc/config/mingw/winnt-dll.cc
>  create mode 100644 gcc/config/mingw/winnt-dll.h
>  create mode 100644 gcc/config/mingw/winnt.h
>
> --
> 2.25.1
>
Evgeny Karpov June 26, 2024, 6:41 p.m. UTC | #4
Wednesday, June 26, 2024 5:56 PM
Andrew Pinski <pinskia@gmail.com> wrote:
> 
> I think this caused profilebootstrap failure on x86_64-linux-gnu.
> I notice the definition of GOT_ALIAS_SET for all non mingw targets is
> now just -1. That seems very wrong to me.
> It was originally:
> ```
> alias_set_type
> x86_GOT_alias_set (void)
> {
>   static alias_set_type set = -1;
>   if (set == -1)
>     set = new_alias_set ();
>   return set;
> }
> ```
> And GOT_ALIAS_SET is used in more than COFF areas. Can you please fix
> this definition?
> 
> Thanks,
> Andrew Pinski
> 

I am working on the fix and will try to validate and submit it today.

Regards,
Evgeny