[newlib-cygwin/main] Cygwin: gendef: restore support for arch-specific cygwin.din files
Corinna Vinschen
corinna@sourceware.org
Wed Mar 11 14:52:40 GMT 2026
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=a49b5ae3e4a612308f5cf8c14621ddf8e72a4cfe
commit a49b5ae3e4a612308f5cf8c14621ddf8e72a4cfe
Author: Thirumalai Nagalingam <thirumalai.nagalingam@multicorewareinc.com>
AuthorDate: Thu Feb 19 22:26:35 2026 +0530
Commit: Corinna Vinschen <corinna@vinschen.de>
CommitDate: Wed Mar 11 15:41:32 2026 +0100
Cygwin: gendef: restore support for arch-specific cygwin.din files
This change adds support for architecture-specific cygwin.din fragments
to allow exported symbols to vary by target CPU.
This mechanism existed prior to commit 3ba050dfcd1d
("Cygwin: fold common.din and x86_64.din into cygwin.din"), which merged
all exports into a single file when only x86 and x86_64 targets were
supported.
With the introduction of on-going AArch64 suport, architecture-specific
export control is again required. The common cygwin.din remains in the
parent directory, while per-architecture files are placed under the
respective arch sub-directories.
The build system is updated to detect and include an optional
architecture-specific cygwin.din file when generating the .def file.
Makefile.am now defines an ARCH_DIN path based on the target CPU and
passes it to scripts/gendef prior to the common cygwin.din. This ensures
architecture-specific directives, such as the LIBRARY base address or
arch-specific exports, are applied correctly while preserving the common
export definitions.
Signed-off-by: Thirumalai Nagalingam <thirumalai.nagalingam@multicorewareinc.com>
Diff:
---
winsup/cygwin/Makefile.am | 8 ++++++--
winsup/cygwin/aarch64/cygwin.din | 6 ++++++
winsup/cygwin/cygwin.din | 3 ---
winsup/cygwin/x86_64/cygwin.din | 6 ++++++
4 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am
index 5f5fdc5ab0e2..06ae3b7dec0b 100644
--- a/winsup/cygwin/Makefile.am
+++ b/winsup/cygwin/Makefile.am
@@ -636,8 +636,12 @@ $(NEW_DLL_NAME): $(LDSCRIPT) libdll.a $(VERSION_OFILES) $(LIBSERVER)\
# cygwin import library
toolopts=--cpu=@target_cpu@ --ar=@AR@ --as=@AS@ --nm=@NM@ --objcopy=@OBJCOPY@
-$(DEF_FILE): scripts/gendef cygwin.din
- $(AM_V_GEN)$(srcdir)/scripts/gendef --cpu=@target_cpu@ --output-def=$(DEF_FILE) $(srcdir)/cygwin.din
+# Architecture-specific .din files
+ARCH_DIN = $(srcdir)/@target_cpu@/cygwin.din
+
+$(DEF_FILE): scripts/gendef cygwin.din $(wildcard $(ARCH_DIN))
+ $(AM_V_GEN)$(srcdir)/scripts/gendef --cpu=@target_cpu@ --output-def=$(DEF_FILE) \
+ $(wildcard $(ARCH_DIN)) $(srcdir)/cygwin.din
sigfe.s: $(DEF_FILE) tlsoffsets
@[ -s $@ ] || \
diff --git a/winsup/cygwin/aarch64/cygwin.din b/winsup/cygwin/aarch64/cygwin.din
new file mode 100644
index 000000000000..67ed5ffcc52a
--- /dev/null
+++ b/winsup/cygwin/aarch64/cygwin.din
@@ -0,0 +1,6 @@
+# aarch64-specific exports
+# These symbols are available on AArch64 architecture
+
+LIBRARY "cygwin1.dll" BASE=0x180040000
+
+EXPORTS
diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din
index cd71da274659..c3518f4804a7 100644
--- a/winsup/cygwin/cygwin.din
+++ b/winsup/cygwin/cygwin.din
@@ -1,6 +1,3 @@
-LIBRARY "cygwin1.dll" BASE=0x180040000
-
-EXPORTS
# Exported variables
__argc DATA
__argv DATA
diff --git a/winsup/cygwin/x86_64/cygwin.din b/winsup/cygwin/x86_64/cygwin.din
new file mode 100644
index 000000000000..12a49b009682
--- /dev/null
+++ b/winsup/cygwin/x86_64/cygwin.din
@@ -0,0 +1,6 @@
+# x86_64-specific exports
+# These symbols are available on x64 architecture
+
+LIBRARY "cygwin1.dll" BASE=0x180040000
+
+EXPORTS
More information about the Cygwin-cvs
mailing list