[v3,2/2] x86_64/i386 fenv: Replace symlink with include fenv_stub.c

Message ID 1582121021-30727-3-git-send-email-joel@rtems.org
State Superseded
Headers show
Series
  • Misc Patches
Related show

Commit Message

Joel Sherrill Feb. 19, 2020, 2:03 p.m.
Having symlinks for these files led to an issue reported to the
RTEMS Project that showed up on MSYS2. Per the report we received,
there are no such things as links on Windows, it is a copy of the
file and if it does not exist it has to fail. The working all depends
on the order the tar file is built. If the links appear in the tar file
before the source exists, it cannot copy the file.

The solution in this patch is to convert the files that are symbolic
links into simple files which include the file they were linked to.
This should be more portable and avoids the symbolinc link problem.
---
 newlib/libm/machine/i386/feclearexcept.c     | 8 +++++++-
 newlib/libm/machine/i386/fegetenv.c          | 8 +++++++-
 newlib/libm/machine/i386/fegetexceptflag.c   | 8 +++++++-
 newlib/libm/machine/i386/fegetround.c        | 8 +++++++-
 newlib/libm/machine/i386/feholdexcept.c      | 8 +++++++-
 newlib/libm/machine/i386/fenv.c              | 8 +++++++-
 newlib/libm/machine/i386/feraiseexcept.c     | 8 +++++++-
 newlib/libm/machine/i386/fesetenv.c          | 8 +++++++-
 newlib/libm/machine/i386/fesetexceptflag.c   | 8 +++++++-
 newlib/libm/machine/i386/fesetround.c        | 8 +++++++-
 newlib/libm/machine/i386/fetestexcept.c      | 8 +++++++-
 newlib/libm/machine/i386/feupdateenv.c       | 8 +++++++-
 newlib/libm/machine/x86_64/feclearexcept.c   | 8 +++++++-
 newlib/libm/machine/x86_64/fegetenv.c        | 8 +++++++-
 newlib/libm/machine/x86_64/fegetexceptflag.c | 8 +++++++-
 newlib/libm/machine/x86_64/fegetround.c      | 8 +++++++-
 newlib/libm/machine/x86_64/feholdexcept.c    | 8 +++++++-
 newlib/libm/machine/x86_64/feraiseexcept.c   | 8 +++++++-
 newlib/libm/machine/x86_64/fesetenv.c        | 8 +++++++-
 newlib/libm/machine/x86_64/fesetexceptflag.c | 8 +++++++-
 newlib/libm/machine/x86_64/fesetround.c      | 8 +++++++-
 newlib/libm/machine/x86_64/fetestexcept.c    | 8 +++++++-
 newlib/libm/machine/x86_64/feupdateenv.c     | 8 +++++++-
 23 files changed, 161 insertions(+), 23 deletions(-)
 mode change 120000 => 100644 newlib/libm/machine/i386/feclearexcept.c
 mode change 120000 => 100644 newlib/libm/machine/i386/fegetenv.c
 mode change 120000 => 100644 newlib/libm/machine/i386/fegetexceptflag.c
 mode change 120000 => 100644 newlib/libm/machine/i386/fegetround.c
 mode change 120000 => 100644 newlib/libm/machine/i386/feholdexcept.c
 mode change 120000 => 100644 newlib/libm/machine/i386/fenv.c
 mode change 120000 => 100644 newlib/libm/machine/i386/feraiseexcept.c
 mode change 120000 => 100644 newlib/libm/machine/i386/fesetenv.c
 mode change 120000 => 100644 newlib/libm/machine/i386/fesetexceptflag.c
 mode change 120000 => 100644 newlib/libm/machine/i386/fesetround.c
 mode change 120000 => 100644 newlib/libm/machine/i386/fetestexcept.c
 mode change 120000 => 100644 newlib/libm/machine/i386/feupdateenv.c
 mode change 120000 => 100644 newlib/libm/machine/x86_64/feclearexcept.c
 mode change 120000 => 100644 newlib/libm/machine/x86_64/fegetenv.c
 mode change 120000 => 100644 newlib/libm/machine/x86_64/fegetexceptflag.c
 mode change 120000 => 100644 newlib/libm/machine/x86_64/fegetround.c
 mode change 120000 => 100644 newlib/libm/machine/x86_64/feholdexcept.c
 mode change 120000 => 100644 newlib/libm/machine/x86_64/feraiseexcept.c
 mode change 120000 => 100644 newlib/libm/machine/x86_64/fesetenv.c
 mode change 120000 => 100644 newlib/libm/machine/x86_64/fesetexceptflag.c
 mode change 120000 => 100644 newlib/libm/machine/x86_64/fesetround.c
 mode change 120000 => 100644 newlib/libm/machine/x86_64/fetestexcept.c
 mode change 120000 => 100644 newlib/libm/machine/x86_64/feupdateenv.c

-- 
1.8.3.1

Comments

Corinna Vinschen Feb. 20, 2020, 9 a.m. | #1
Hey Joel,

the patch itself is fine, but I'm puzzeling over the commit message.

On Feb 19 08:03, Joel Sherrill wrote:
> Having symlinks for these files led to an issue reported to the

> RTEMS Project that showed up on MSYS2. Per the report we received,


MSYS2 is a Cygwin clone which understands any kind of Cygwin symlink,
an invention from way back when Windows really didn't have symlinks.

> there are no such things as links on Windows,


NTFS has symlinks since Windows Vista, about 2007.

> it is a copy of the

> file and if it does not exist it has to fail. The working all depends

> on the order the tar file is built. If the links appear in the tar file

> before the source exists, it cannot copy the file.


Isn't that just somebody using an inadequate tool here?  Do you have a
pointer to a bugzilla/github/whatever issue clarifying the actual
problem?


Thanks,
Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
Red Hat
Joel Sherrill Feb. 20, 2020, 1:54 p.m. | #2
On Thu, Feb 20, 2020 at 3:01 AM Corinna Vinschen <vinschen@redhat.com>
wrote:

> Hey Joel,

>

> the patch itself is fine, but I'm puzzeling over the commit message.

>


That was the end result of the investigation into the user's issue. I had
to be
pinged privately to even notice that my fenv addition of symlinks triggered
the
failure. It just wasn't obvious at first to me. It was hard to see how the
fenv patch
could trigger this.

My conclusion is that avoiding symlinks in source distributions falls into
the
same rule bucket as not using capitalization to distinguish files in the
same
directory. Works almost everywhere not not quite. Just like we used to avoid
long file names.


>

> On Feb 19 08:03, Joel Sherrill wrote:

> > Having symlinks for these files led to an issue reported to the

> > RTEMS Project that showed up on MSYS2. Per the report we received,

>

> MSYS2 is a Cygwin clone which understands any kind of Cygwin symlink,

> an invention from way back when Windows really didn't have symlinks.

>

> > there are no such things as links on Windows,

>

> NTFS has symlinks since Windows Vista, about 2007.

>


Yeah. It is an issue with tar. Apparently you can't create symlinks
to non-existent files at least with bsdtar. If the link is in the tar file
before
the real file, it fails to create the file. Maybe GNU tar covers this
up.

>

> > it is a copy of the

> > file and if it does not exist it has to fail. The working all depends

> > on the order the tar file is built. If the links appear in the tar file

> > before the source exists, it cannot copy the file.

>

> Isn't that just somebody using an inadequate tool here?  Do you have a

> pointer to a bugzilla/github/whatever issue clarifying the actual

> problem?

>


Here is the thread. It is a few messages in before investigation shows it
is a tar file issue.

https://lists.rtems.org/pipermail/devel/2020-February/057184.html

The RTEMS ticket is here:

https://devel.rtems.org/ticket/3868

I know this is an odd one.

--joel

>

>

> Thanks,

> Corinna

>

> --

> Corinna Vinschen

> Cygwin Maintainer

> Red Hat

>
Corinna Vinschen Feb. 20, 2020, 2:09 p.m. | #3
On Feb 20 07:54, Joel Sherrill wrote:
> On Thu, Feb 20, 2020 at 3:01 AM Corinna Vinschen <vinschen@redhat.com>

> wrote:

> 

> > Hey Joel,

> >

> > the patch itself is fine, but I'm puzzeling over the commit message.

> >

> [...]

> Yeah. It is an issue with tar. Apparently you can't create symlinks

> to non-existent files at least with bsdtar. If the link is in the tar file

> before

> the real file, it fails to create the file. Maybe GNU tar covers this

> up.

> [...]

> Here is the thread. It is a few messages in before investigation shows it

> is a tar file issue.

> 

> https://lists.rtems.org/pipermail/devel/2020-February/057184.html

> 

> The RTEMS ticket is here:

> 

> https://devel.rtems.org/ticket/3868

> 

> I know this is an odd one.


In that case I'd like to change the commit message to something along
these lines:

---
Having symlinks for these files led to an issue reported to the RTEMS
Project that showed up using some tar for native Windows to unpack the
newlib sources.  It creates symlinks in the tar file as copies of the
files the symlinks point to.  If the links appear in the tar file before 
the source exists, it cannot copy the file.

The solution in this patch is to convert the files that are symbolic
links into simple files which include the file they were linked to.
This should be more portable and avoids the symbolinc link problem.
---

This doesn't point to MSYS2 or "recet" Windows versions as the culprit.


That ok with you?


Thanks,
Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
Red Hat
Joel Sherrill Feb. 25, 2020, 1:38 p.m. | #4
On Thu, Feb 20, 2020 at 8:10 AM Corinna Vinschen <vinschen@redhat.com>
wrote:

> On Feb 20 07:54, Joel Sherrill wrote:

> > On Thu, Feb 20, 2020 at 3:01 AM Corinna Vinschen <vinschen@redhat.com>

> > wrote:

> >

> > > Hey Joel,

> > >

> > > the patch itself is fine, but I'm puzzeling over the commit message.

> > >

> > [...]

> > Yeah. It is an issue with tar. Apparently you can't create symlinks

> > to non-existent files at least with bsdtar. If the link is in the tar

> file

> > before

> > the real file, it fails to create the file. Maybe GNU tar covers this

> > up.

> > [...]

> > Here is the thread. It is a few messages in before investigation shows it

> > is a tar file issue.

> >

> > https://lists.rtems.org/pipermail/devel/2020-February/057184.html

> >

> > The RTEMS ticket is here:

> >

> > https://devel.rtems.org/ticket/3868

> >

> > I know this is an odd one.

>

> In that case I'd like to change the commit message to something along

> these lines:

>

> ---

> Having symlinks for these files led to an issue reported to the RTEMS

> Project that showed up using some tar for native Windows to unpack the

> newlib sources.  It creates symlinks in the tar file as copies of the

> files the symlinks point to.  If the links appear in the tar file before

> the source exists, it cannot copy the file.

>

> The solution in this patch is to convert the files that are symbolic

> links into simple files which include the file they were linked to.

> This should be more portable and avoids the symbolinc link problem.

> ---

>

> This doesn't point to MSYS2 or "recet" Windows versions as the culprit.

>

>

> That ok with you?

>


It is. :)

Patch coming.

--joel


>

>

> Thanks,

> Corinna

>

> --

> Corinna Vinschen

> Cygwin Maintainer

> Red Hat

>

Patch

diff --git a/newlib/libm/machine/i386/feclearexcept.c b/newlib/libm/machine/i386/feclearexcept.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/i386/feclearexcept.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/i386/feclearexcept.c b/newlib/libm/machine/i386/feclearexcept.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/i386/feclearexcept.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/i386/fegetenv.c b/newlib/libm/machine/i386/fegetenv.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/i386/fegetenv.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/i386/fegetenv.c b/newlib/libm/machine/i386/fegetenv.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/i386/fegetenv.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/i386/fegetexceptflag.c b/newlib/libm/machine/i386/fegetexceptflag.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/i386/fegetexceptflag.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/i386/fegetexceptflag.c b/newlib/libm/machine/i386/fegetexceptflag.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/i386/fegetexceptflag.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/i386/fegetround.c b/newlib/libm/machine/i386/fegetround.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/i386/fegetround.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/i386/fegetround.c b/newlib/libm/machine/i386/fegetround.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/i386/fegetround.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/i386/feholdexcept.c b/newlib/libm/machine/i386/feholdexcept.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/i386/feholdexcept.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/i386/feholdexcept.c b/newlib/libm/machine/i386/feholdexcept.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/i386/feholdexcept.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/i386/fenv.c b/newlib/libm/machine/i386/fenv.c
deleted file mode 120000
index 1d7c7a1..0000000
--- a/newlib/libm/machine/i386/fenv.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../x86_64/fenv.c
\ No newline at end of file
diff --git a/newlib/libm/machine/i386/fenv.c b/newlib/libm/machine/i386/fenv.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/i386/fenv.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/i386/feraiseexcept.c b/newlib/libm/machine/i386/feraiseexcept.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/i386/feraiseexcept.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/i386/feraiseexcept.c b/newlib/libm/machine/i386/feraiseexcept.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/i386/feraiseexcept.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/i386/fesetenv.c b/newlib/libm/machine/i386/fesetenv.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/i386/fesetenv.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/i386/fesetenv.c b/newlib/libm/machine/i386/fesetenv.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/i386/fesetenv.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/i386/fesetexceptflag.c b/newlib/libm/machine/i386/fesetexceptflag.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/i386/fesetexceptflag.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/i386/fesetexceptflag.c b/newlib/libm/machine/i386/fesetexceptflag.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/i386/fesetexceptflag.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/i386/fesetround.c b/newlib/libm/machine/i386/fesetround.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/i386/fesetround.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/i386/fesetround.c b/newlib/libm/machine/i386/fesetround.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/i386/fesetround.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/i386/fetestexcept.c b/newlib/libm/machine/i386/fetestexcept.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/i386/fetestexcept.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/i386/fetestexcept.c b/newlib/libm/machine/i386/fetestexcept.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/i386/fetestexcept.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/i386/feupdateenv.c b/newlib/libm/machine/i386/feupdateenv.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/i386/feupdateenv.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/i386/feupdateenv.c b/newlib/libm/machine/i386/feupdateenv.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/i386/feupdateenv.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/x86_64/feclearexcept.c b/newlib/libm/machine/x86_64/feclearexcept.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/x86_64/feclearexcept.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/x86_64/feclearexcept.c b/newlib/libm/machine/x86_64/feclearexcept.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/x86_64/feclearexcept.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/x86_64/fegetenv.c b/newlib/libm/machine/x86_64/fegetenv.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/x86_64/fegetenv.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/x86_64/fegetenv.c b/newlib/libm/machine/x86_64/fegetenv.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/x86_64/fegetenv.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/x86_64/fegetexceptflag.c b/newlib/libm/machine/x86_64/fegetexceptflag.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/x86_64/fegetexceptflag.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/x86_64/fegetexceptflag.c b/newlib/libm/machine/x86_64/fegetexceptflag.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/x86_64/fegetexceptflag.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/x86_64/fegetround.c b/newlib/libm/machine/x86_64/fegetround.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/x86_64/fegetround.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/x86_64/fegetround.c b/newlib/libm/machine/x86_64/fegetround.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/x86_64/fegetround.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/x86_64/feholdexcept.c b/newlib/libm/machine/x86_64/feholdexcept.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/x86_64/feholdexcept.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/x86_64/feholdexcept.c b/newlib/libm/machine/x86_64/feholdexcept.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/x86_64/feholdexcept.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/x86_64/feraiseexcept.c b/newlib/libm/machine/x86_64/feraiseexcept.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/x86_64/feraiseexcept.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/x86_64/feraiseexcept.c b/newlib/libm/machine/x86_64/feraiseexcept.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/x86_64/feraiseexcept.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/x86_64/fesetenv.c b/newlib/libm/machine/x86_64/fesetenv.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/x86_64/fesetenv.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/x86_64/fesetenv.c b/newlib/libm/machine/x86_64/fesetenv.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/x86_64/fesetenv.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/x86_64/fesetexceptflag.c b/newlib/libm/machine/x86_64/fesetexceptflag.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/x86_64/fesetexceptflag.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/x86_64/fesetexceptflag.c b/newlib/libm/machine/x86_64/fesetexceptflag.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/x86_64/fesetexceptflag.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/x86_64/fesetround.c b/newlib/libm/machine/x86_64/fesetround.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/x86_64/fesetround.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/x86_64/fesetround.c b/newlib/libm/machine/x86_64/fesetround.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/x86_64/fesetround.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/x86_64/fetestexcept.c b/newlib/libm/machine/x86_64/fetestexcept.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/x86_64/fetestexcept.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/x86_64/fetestexcept.c b/newlib/libm/machine/x86_64/fetestexcept.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/x86_64/fetestexcept.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"
diff --git a/newlib/libm/machine/x86_64/feupdateenv.c b/newlib/libm/machine/x86_64/feupdateenv.c
deleted file mode 120000
index f97d27d..0000000
--- a/newlib/libm/machine/x86_64/feupdateenv.c
+++ /dev/null
@@ -1 +0,0 @@ 
-../../fenv/fenv_stub.c
\ No newline at end of file
diff --git a/newlib/libm/machine/x86_64/feupdateenv.c b/newlib/libm/machine/x86_64/feupdateenv.c
new file mode 100644
index 0000000..a8601af
--- /dev/null
+++ b/newlib/libm/machine/x86_64/feupdateenv.c
@@ -0,0 +1,7 @@ 
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * 
+ * (c) Copyright 2019 Joel Sherrill <joel@rtems.org>
+ */
+
+#include "../../fenv/fenv_stub.c"