From da646c5040f659dc9af32f9442e2e9066b8d19f6 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Fri, 7 Aug 2020 11:36:15 +0200
Subject: [PATCH] rm fp_exception_glibc_extension.h

unused since long
---
 Core/Tools/fp_exception_glibc_extension.c.bak | 348 ------------------
 Core/Tools/fp_exception_glibc_extension.h     |  64 ----
 2 files changed, 412 deletions(-)
 delete mode 100644 Core/Tools/fp_exception_glibc_extension.c.bak
 delete mode 100644 Core/Tools/fp_exception_glibc_extension.h

diff --git a/Core/Tools/fp_exception_glibc_extension.c.bak b/Core/Tools/fp_exception_glibc_extension.c.bak
deleted file mode 100644
index 7c97d4d8c87..00000000000
--- a/Core/Tools/fp_exception_glibc_extension.c.bak
+++ /dev/null
@@ -1,348 +0,0 @@
-/*   Title:  Floating-point exception handling example
-    Author:  David N. Williams
-      File:  fe-handlng-example.c
-   License:  Public Domain
-   Version:  0.5.0
-   Started:  21-Sep-09
-   Revised:  22-Sep-09
-   Revised:  30-Sep-09 (comment typo)
-   Revised:  18 Oct-12 (chnaged char* to const char * on line 228, by Richard Booth)
-
-This code is an example of alternate, nondefault handling of
-IEEE 754 floating-point exceptions in OS X and Linux, based on
-the GNU functions feenableexcept(), fedisableeexcept(), and
-fegetexcept() [in libm], plus POSIX sigaction().
-
-The GNU functions above are not implemented in OS X Leopard,
-gcc 4.x, but are present in Linux.  We implement them here for
-OS X, at least until the underlying mechanism is no longer
-supported by Apple.
-
-The mechanism is to use the POSIX functions fegetenv() and
-fesetenv(), which *are* present in OS X, to manipulate the ppc
-and intel floating-point control registers, after changing bits
-in fields corresponding to those registers in the fenv_t data
-type.
-
-Assembly language code to directly access the floating-point
-status and control registers for ppc and intel is also included.
-
-This example grew out of an update to legacy code for Apple
-ppc's.  The original legacy code is in Listing 7-1 in "PowerPC
-Numerics", 2004:
-
-http://lists.apple.com/archives/unix-porting/2003/May/msg00026.html
-
-Another version of the ppc legacy code is here:
-
-http://developer.apple.com/
-documentation/Performance/Conceptual/Mac_OSX_Numerics/Mac_OSX_Numerics.pdf
-
-Terry Lambert pointed out that our naive update of the legacy
-example to Mac OS X Leopard made egregious unsupported use of
-system context structures in the handler.  See his reply to
-
-http://lists.apple.com/archives/Darwin-dev/2009/Sep/msg00091.html
-
-The example in this file is more plain vanilla, and aims at
-alternate handling that does not return to the application, but
-rather aborts with a diagnostic message.
-
-To compile it under Mac OS X, execute:
-
-  cc -o fe-handling fe-handling-example.c
-
-To compile it under Linux, execute:
-
-  cc -DLINUX -lm -o fe-handling fe-handling-example.c
-*/
-
-#ifdef Q_OS_LINUX
-/* BEGIN quote
-http://graphviz.sourcearchive.com/documentation/2.16/gvrender__pango_8c-source.html
-*/
-/* _GNU_SOURCE is needed (supposedly) for the feenableexcept
- * prototype to be defined in fenv.h on GNU systems.
- * Presumably it will do no harm on other systems.
- */
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-
-/* We are not supposed to need __USE_GNU, but I can't see
- * how to get the prototype for fedisableexcept from
- * /usr/include/fenv.h without it.
- */
-#ifndef __USE_GNU
-#define __USE_GNU
-#endif
-/* END quote */
-#endif // Q_OS_LINUX
-
-#include <fenv.h>
-
-#define DEFINED_PPC (defined(__ppc__) || defined(__ppc64__))
-#define DEFINED_INTEL (defined(__i386__) || defined(__x86_64__))
-
-#ifndef Q_OS_LINUX
-#if DEFINED_PPC
-
-#define FE_EXCEPT_SHIFT 22 // shift flags right to get masks
-#define FM_ALL_EXCEPT FE_ALL_EXCEPT >> FE_EXCEPT_SHIFT
-
-/* GNU C Library:
-http://www.gnu.org/software/libc/manual/html_node/Control-Functions.html
-
-     - Function: int fegetexcept (int excepts)
-
-       The function returns a bitmask of all currently enabled
-       exceptions.  It returns -1 in case of failure.
-
-   The excepts argument appears in other functions in fenv.h,
-   and corresponds to the FE_xxx exception flag constants.  It
-   is unclear whether the bitmask is for the flags or the masks.
-   We return that for the flags, which corresponds to the
-   excepts argument in feenableexcept(excepts) and
-   fedisableexcept(excepts).  In GNU/Linux the argument is void,
-   and that's what we implement.  Linux "man fegetenv" appears
-   to suggest that it's the mask corresponding to bits in
-   excepts that is returned.
-*/
-int fegetexcept(void)
-{
-    static fenv_t fenv;
-
-    return (fegetenv(&fenv) ? -1 : ((fenv & (FM_ALL_EXCEPT)) << FE_EXCEPT_SHIFT));
-}
-
-int feenableexcept(unsigned int excepts)
-{
-    static fenv_t fenv;
-    unsigned int new_excepts = (excepts & FE_ALL_EXCEPT) >> FE_EXCEPT_SHIFT,
-                 old_excepts; // all previous masks
-
-    if (fegetenv(&fenv))
-        return -1;
-    old_excepts = (fenv & FM_ALL_EXCEPT) << FE_EXCEPT_SHIFT;
-
-    fenv = (fenv & ~new_excepts) | new_excepts;
-    return (fesetenv(&fenv) ? -1 : old_excepts);
-}
-
-int fedisableexcept(unsigned int excepts)
-{
-    static fenv_t fenv;
-    unsigned int still_on = ~((excepts & FE_ALL_EXCEPT) >> FE_EXCEPT_SHIFT),
-                 old_excepts; // previous masks
-
-    if (fegetenv(&fenv))
-        return -1;
-    old_excepts = (fenv & FM_ALL_EXCEPT) << FE_EXCEPT_SHIFT;
-
-    fenv& = still_on;
-    return (fesetenv(&fenv) ? -1 : old_excepts);
-}
-
-#elif DEFINED_INTEL
-
-int fegetexcept(void)
-{
-    static fenv_t fenv;
-
-    return fegetenv(&fenv) ? -1 : (fenv.__control & FE_ALL_EXCEPT);
-}
-
-int feenableexcept(unsigned int excepts)
-{
-    static fenv_t fenv;
-    unsigned int new_excepts = excepts & FE_ALL_EXCEPT,
-                 old_excepts; // previous masks
-
-    if (fegetenv(&fenv))
-        return -1;
-    old_excepts = fenv.__control & FE_ALL_EXCEPT;
-
-    // unmask
-    fenv.__control &= ~new_excepts;
-    fenv.__mxcsr &= ~(new_excepts << 7);
-
-    return (fesetenv(&fenv) ? -1 : old_excepts);
-}
-
-int fedisableexcept(unsigned int excepts)
-{
-    static fenv_t fenv;
-    unsigned int new_excepts = excepts & FE_ALL_EXCEPT,
-                 old_excepts; // all previous masks
-
-    if (fegetenv(&fenv))
-        return -1;
-    old_excepts = fenv.__control & FE_ALL_EXCEPT;
-
-    // mask
-    fenv.__control |= new_excepts;
-    fenv.__mxcsr |= new_excepts << 7;
-
-    return (fesetenv(&fenv) ? -1 : old_excepts);
-}
-
-#endif // PPC or INTEL enabling
-#endif // not Q_OS_LINUX
-
-#if DEFINED_PPC
-
-#define getfpscr(x) asm volatile("mffs %0" : "=f"(x));
-#define setfpscr(x) asm volatile("mtfsf 255,%0" : : "f"(x));
-
-typedef union {
-    struct {
-        unsigned long hi;
-        unsigned long lo;
-    } i;
-    double d;
-} hexdouble;
-
-#endif // DEFINED_PPC
-
-#if DEFINED_INTEL
-
-// x87 fpu
-#define getx87cr(x) asm("fnstcw %0" : "=m"(x));
-#define setx87cr(x) asm("fldcw %0" : "=m"(x));
-#define getx87sr(x) asm("fnstsw %0" : "=m"(x));
-
-// SIMD, gcc with Intel Core 2 Duo uses SSE2(4)
-#define getmxcsr(x) asm("stmxcsr %0" : "=m"(x));
-#define setmxcsr(x) asm("ldmxcsr %0" : "=m"(x));
-
-#endif // DEFINED_INTEL
-
-#include <signal.h>
-#include <stdio.h>  // printf()
-#include <stdlib.h> // abort(), exit()
-
-static const char* fe_code_name[] = {"FPE_NOOP",
-                                     "FPE_FLTDIV",
-                                     "FPE_FLTINV",
-                                     "FPE_FLTOVF",
-                                     "FPE_FLTUND",
-                                     "FPE_FLTRES",
-                                     "FPE_FLTSUB",
-                                     "FPE_INTDIV",
-                                     "FPE_INTOVF"
-                                     "FPE_UNKNOWN"};
-
-/* SAMPLE ALTERNATE FP EXCEPTION HANDLER
-
-   The sample handler just reports information about the
-   exception that invoked it, and aborts.  It makes no attempt
-   to restore state and return to the application.
-
-   More sophisticated handling would have to confront at least
-   these issues:
-
-     * interface to the system context for restoring state
-     * imprecision of interrupts from hardware for the intel x87
-       fpu (but not the SIMD unit, nor the ppc)
-     * imprecision of interrupts from system software
-*/
-void fhdl(int sig, siginfo_t* sip, ucontext_t* scp)
-{
-    (void)scp;
-    int fe_code = sip->si_code;
-    unsigned int excepts = fetestexcept(FE_ALL_EXCEPT);
-
-    switch (fe_code) {
-#ifdef FPE_NOOP // occurs in OS X
-    case FPE_NOOP:
-        fe_code = 0;
-        break;
-#endif
-    case FPE_FLTDIV:
-        fe_code = 1;
-        break; // divideByZero
-    case FPE_FLTINV:
-        fe_code = 2;
-        break; // invalid
-    case FPE_FLTOVF:
-        fe_code = 3;
-        break; // overflow
-    case FPE_FLTUND:
-        fe_code = 4;
-        break; // underflow
-    case FPE_FLTRES:
-        fe_code = 5;
-        break; // inexact
-    case FPE_FLTSUB:
-        fe_code = 6;
-        break; // invalid
-    case FPE_INTDIV:
-        fe_code = 7;
-        break; // overflow
-    case FPE_INTOVF:
-        fe_code = 8;
-        break; // underflow
-    default:
-        fe_code = 9;
-    }
-
-    if (sig == SIGFPE) {
-#if DEFINED_INTEL
-        unsigned short x87cr, x87sr;
-        unsigned int mxcsr;
-
-        getx87cr(x87cr);
-        getx87sr(x87sr);
-        getmxcsr(mxcsr);
-        printf("X87CR:   0x%04X\n", x87cr);
-        printf("X87SR:   0x%04X\n", x87sr);
-        printf("MXCSR:   0x%08X\n", mxcsr);
-#endif
-
-#if DEFINED_PPC
-        hexdouble t;
-
-        getfpscr(t.d);
-        printf("FPSCR:   0x%08X\n", t.i.lo);
-#endif
-
-        printf("signal:  SIGFPE with code %s\n", fe_code_name[fe_code]);
-        printf("invalid flag:    0x%04X\n", excepts & FE_INVALID);
-        printf("divByZero flag:  0x%04X\n", excepts & FE_DIVBYZERO);
-    } else
-        printf("Signal is not SIGFPE, it's %i.\n", sig);
-
-    abort();
-}
-
-/*
-int main (int argc, char **argv)
-{
-     double s;
-//     struct sigaction act;
-//
-//     //act.sa_sigaction = (void(*))fhdl;
-//     act.sa_sigaction = reinterpret_cast<void *>(fhdl);
-//     sigemptyset (&act.sa_mask);
-//     act.sa_flags = SA_SIGINFO;
-
-
-//  printf ("Old divByZero exception: 0x%08X\n", feenableexcept (FE_DIVBYZERO));
-//    printf ("Old invalid exception:   0x%08X\n", feenableexcept (FE_INVALID));
-//    printf ("New fp exception:        0x%08X\n", fegetexcept ());
-
-    feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);
-
-    // set handler
-//     if (sigaction(SIGFPE, &act, (struct sigaction *)0) != 0)
-//     {
-//         perror("Yikes");
-//         exit(-1);
-//     }
-
-//  s = 1.0 / 0.0;  // FE_DIVBYZERO
-    s = 0.0 / 0.0;  // FE_INVALID
-    return 0;
-}
-
-*/
diff --git a/Core/Tools/fp_exception_glibc_extension.h b/Core/Tools/fp_exception_glibc_extension.h
deleted file mode 100644
index 1ed7a1772c4..00000000000
--- a/Core/Tools/fp_exception_glibc_extension.h
+++ /dev/null
@@ -1,64 +0,0 @@
-// ************************************************************************** //
-//
-//! @file      Core/Tools/fp_exception_glibc_extension.h
-//! @brief     glibc floating point extension replacement for OS X.
-//
-//! License:   Public Domain
-//! @authors   David N. Williams
-//! @version   0.5.0
-//
-// ************************************************************************** //
-
-#ifndef BORNAGAIN_CORE_TOOLS_FP_EXCEPTION_GLIBC_EXTENSION_H
-#define BORNAGAIN_CORE_TOOLS_FP_EXCEPTION_GLIBC_EXTENSION_H
-
-#include <fenv.h>
-#include <signal.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* GNU C Library:
-   http://www.gnu.org/software/libc/manual/html_node/Control-Functions.html
-
-   - Function: int fegetexcept (int excepts)
-
-   The function returns a bitmask of all currently enabled
-   exceptions.  It returns -1 in case of failure.
-
-   The excepts argument appears in other functions in fenv.h,
-   and corresponds to the FE_xxx exception flag constants.  It
-   is unclear whether the bitmask is for the flags or the masks.
-   We return that for the flags, which corresponds to the
-   excepts argument in feenableexcept(excepts) and
-   fedisableexcept(excepts).  In GNU/Linux the argument is void,
-   and that's what we implement.  Linux "man fegetenv" appears
-   to suggest that it's the mask corresponding to bits in
-   excepts that is returned.
-*/
-int fegetexcept(void);
-int feenableexcept(unsigned int excepts);
-int fedisableexcept(unsigned int excepts);
-
-/* SAMPLE ALTERNATE FP EXCEPTION HANDLER
-
-   The sample handler just reports information about the
-   exception that invoked it, and aborts.  It makes no attempt
-   to restore state and return to the application.
-
-   More sophisticated handling would have to confront at least
-   these issues:
-
-   * interface to the system context for restoring state
-   * imprecision of interrupts from hardware for the intel x87
-   fpu (but not the SIMD unit, nor the ppc)
-   * imprecision of interrupts from system software
-   */
-void fhdl(int sig, siginfo_t* sip, ucontext_t* scp);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // BORNAGAIN_CORE_TOOLS_FP_EXCEPTION_GLIBC_EXTENSION_H
-- 
GitLab