Changeset 0100882


Ignore:
Timestamp:
Apr 9, 2020, 6:42:22 PM (18 months ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
arm-eh, jacob/cs343-translation, master, new-ast, new-ast-unique-expr
Children:
7df014f
Parents:
2ad74d8 (diff), cb20dcd (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Location:
libcfa
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • libcfa/configure

    r2ad74d8 r0100882  
    19601960
    19611961} # ac_fn_cxx_try_link
     1962
     1963# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
     1964# -------------------------------------------------------
     1965# Tests whether HEADER exists, giving a warning if it cannot be compiled using
     1966# the include files in INCLUDES and setting the cache variable VAR
     1967# accordingly.
     1968ac_fn_c_check_header_mongrel ()
     1969{
     1970  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
     1971  if eval \${$3+:} false; then :
     1972  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
     1973$as_echo_n "checking for $2... " >&6; }
     1974if eval \${$3+:} false; then :
     1975  $as_echo_n "(cached) " >&6
     1976fi
     1977eval ac_res=\$$3
     1978               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
     1979$as_echo "$ac_res" >&6; }
     1980else
     1981  # Is the header compilable?
     1982{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
     1983$as_echo_n "checking $2 usability... " >&6; }
     1984cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     1985/* end confdefs.h.  */
     1986$4
     1987#include <$2>
     1988_ACEOF
     1989if ac_fn_c_try_compile "$LINENO"; then :
     1990  ac_header_compiler=yes
     1991else
     1992  ac_header_compiler=no
     1993fi
     1994rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     1995{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
     1996$as_echo "$ac_header_compiler" >&6; }
     1997
     1998# Is the header present?
     1999{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
     2000$as_echo_n "checking $2 presence... " >&6; }
     2001cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     2002/* end confdefs.h.  */
     2003#include <$2>
     2004_ACEOF
     2005if ac_fn_c_try_cpp "$LINENO"; then :
     2006  ac_header_preproc=yes
     2007else
     2008  ac_header_preproc=no
     2009fi
     2010rm -f conftest.err conftest.i conftest.$ac_ext
     2011{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
     2012$as_echo "$ac_header_preproc" >&6; }
     2013
     2014# So?  What about this header?
     2015case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
     2016  yes:no: )
     2017    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
     2018$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
     2019    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
     2020$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
     2021    ;;
     2022  no:yes:* )
     2023    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
     2024$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
     2025    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
     2026$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
     2027    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
     2028$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
     2029    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
     2030$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
     2031    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
     2032$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
     2033( $as_echo "## --------------------------------------- ##
     2034## Report this to cforall@plg.uwaterloo.ca ##
     2035## --------------------------------------- ##"
     2036     ) | sed "s/^/$as_me: WARNING:     /" >&2
     2037    ;;
     2038esac
     2039  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
     2040$as_echo_n "checking for $2... " >&6; }
     2041if eval \${$3+:} false; then :
     2042  $as_echo_n "(cached) " >&6
     2043else
     2044  eval "$3=\$ac_header_compiler"
     2045fi
     2046eval ac_res=\$$3
     2047               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
     2048$as_echo "$ac_res" >&6; }
     2049fi
     2050  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
     2051
     2052} # ac_fn_c_check_header_mongrel
    19622053cat >config.log <<_ACEOF
    19632054This file contains any messages produced by compilers while
     
    1685916950
    1686016951
     16952for ac_header in linux/io_uring.h
     16953do :
     16954  ac_fn_c_check_header_mongrel "$LINENO" "linux/io_uring.h" "ac_cv_header_linux_io_uring_h" "$ac_includes_default"
     16955if test "x$ac_cv_header_linux_io_uring_h" = xyes; then :
     16956  cat >>confdefs.h <<_ACEOF
     16957#define HAVE_LINUX_IO_URING_H 1
     16958_ACEOF
     16959
     16960fi
     16961
     16962done
     16963
     16964
    1686116965ac_config_files="$ac_config_files Makefile src/Makefile prelude/Makefile"
    1686216966
  • libcfa/configure.ac

    r2ad74d8 r0100882  
    118118AC_PROG_MAKE_SET
    119119
     120AC_CHECK_HEADERS([linux/io_uring.h])
     121
    120122AC_CONFIG_FILES([
    121123        Makefile
  • libcfa/src/Makefile.am

    r2ad74d8 r0100882  
    4848thread_headers_nosrc = concurrency/invoke.h
    4949thread_headers = concurrency/coroutine.hfa concurrency/thread.hfa concurrency/kernel.hfa concurrency/monitor.hfa concurrency/mutex.hfa
    50 thread_libsrc = concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa concurrency/invoke.c concurrency/preemption.cfa ${thread_headers:.hfa=.cfa}
     50thread_libsrc = concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa concurrency/invoke.c concurrency/io.cfa concurrency/preemption.cfa ${thread_headers:.hfa=.cfa}
    5151else
    5252headers =
  • libcfa/src/Makefile.in

    r2ad74d8 r0100882  
    164164am__libcfathread_la_SOURCES_DIST =  \
    165165        concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa \
    166         concurrency/invoke.c concurrency/preemption.cfa \
    167         concurrency/coroutine.cfa concurrency/thread.cfa \
    168         concurrency/kernel.cfa concurrency/monitor.cfa \
    169         concurrency/mutex.cfa
     166        concurrency/invoke.c concurrency/io.cfa \
     167        concurrency/preemption.cfa concurrency/coroutine.cfa \
     168        concurrency/thread.cfa concurrency/kernel.cfa \
     169        concurrency/monitor.cfa concurrency/mutex.cfa
    170170@BUILDLIB_TRUE@am__objects_3 = concurrency/coroutine.lo \
    171171@BUILDLIB_TRUE@ concurrency/thread.lo concurrency/kernel.lo \
     
    174174@BUILDLIB_TRUE@ concurrency/CtxSwitch-@ARCHITECTURE@.lo \
    175175@BUILDLIB_TRUE@ concurrency/alarm.lo concurrency/invoke.lo \
    176 @BUILDLIB_TRUE@ concurrency/preemption.lo $(am__objects_3)
     176@BUILDLIB_TRUE@ concurrency/io.lo concurrency/preemption.lo \
     177@BUILDLIB_TRUE@ $(am__objects_3)
    177178am_libcfathread_la_OBJECTS = $(am__objects_4)
    178179libcfathread_la_OBJECTS = $(am_libcfathread_la_OBJECTS)
     
    474475@BUILDLIB_FALSE@thread_headers =
    475476@BUILDLIB_TRUE@thread_headers = concurrency/coroutine.hfa concurrency/thread.hfa concurrency/kernel.hfa concurrency/monitor.hfa concurrency/mutex.hfa
    476 @BUILDLIB_TRUE@thread_libsrc = concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa concurrency/invoke.c concurrency/preemption.cfa ${thread_headers:.hfa=.cfa}
     477@BUILDLIB_TRUE@thread_libsrc = concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa concurrency/invoke.c concurrency/io.cfa concurrency/preemption.cfa ${thread_headers:.hfa=.cfa}
    477478
    478479#----------------------------------------------------------------------------------------------------------------
     
    608609        concurrency/$(DEPDIR)/$(am__dirstamp)
    609610concurrency/invoke.lo: concurrency/$(am__dirstamp) \
     611        concurrency/$(DEPDIR)/$(am__dirstamp)
     612concurrency/io.lo: concurrency/$(am__dirstamp) \
    610613        concurrency/$(DEPDIR)/$(am__dirstamp)
    611614concurrency/preemption.lo: concurrency/$(am__dirstamp) \
  • libcfa/src/exception.c

    r2ad74d8 r0100882  
    1010// Created On       : Mon Jun 26 15:13:00 2017
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Mon Apr 06 14:40:00 2020
    13 // Update Count     : 15
     12// Last Modified On : Thr Apr  9 12:20:00 2020
     13// Update Count     : 17
    1414//
    1515
     
    2828#include <unwind.h>
    2929#include <bits/debug.hfa>
     30#include "stdhdr/assert.h"
    3031
    3132// FIX ME: temporary hack to keep ARM build working
     
    216217                struct _Unwind_Context * unwind_context,
    217218                void * stop_param) {
    218         if ( actions & _UA_END_OF_STACK  ) exit(1);
    219         if ( actions & _UA_CLEANUP_PHASE ) return _URC_NO_REASON;
    220 
    221         return _URC_FATAL_PHASE2_ERROR;
     219        // Verify actions follow the rules we expect.
     220        verify((actions & _UA_CLEANUP_PHASE) && actions & (_UA_FORCE_UNWIND));
     221        verify(!(actions & (_UA_SEARCH_PHASE | _UA_HANDER_FRAME)));
     222
     223        if ( actions & _UA_END_OF_STACK ) {
     224                exit(1);
     225        } else {
     226                return _URC_NO_REASON;
     227        }
    222228}
    223229
     
    282288                        version, actions, exception_class, unwind_exception, unwind_context);
    283289
    284         // If we've reached the end of the stack then there is nothing much we can do...
    285         if (actions & _UA_END_OF_STACK) return _URC_END_OF_STACK;
    286 
     290        // Verify that actions follow the rules we expect.
     291        // This function should never be called at the end of the stack.
     292        verify(!(actions & _UA_END_OF_STACK));
     293        // Either only the search phase flag is set or...
    287294        if (actions & _UA_SEARCH_PHASE) {
     295                verify(actions == _UA_SEARCH_PHASE);
    288296                __cfaabi_dbg_print_safe(" lookup phase");
    289         }
    290         else if (actions & _UA_CLEANUP_PHASE) {
     297        // ... we are in clean-up phase.
     298        } else {
     299                verify(actions & _UA_CLEANUP_PHASE);
    291300                __cfaabi_dbg_print_safe(" cleanup phase");
    292         }
    293         // Just in case, probably can't actually happen
    294         else {
    295                 printf(" error\n");
    296                 return _URC_FATAL_PHASE1_ERROR;
     301                // We shouldn't be the handler frame during forced unwind.
     302                if (actions & _UA_HANDLER_FRAME) {
     303                        verify(!(actions & _UA_FORCE_UNWIND));
     304                        __cfaabi_dbg_print_safe(" (handler frame)");
     305                } else if (actions & _UA_FORCE_UNWIND) {
     306                        __cfaabi_dbg_print_safe(" (force unwind)");
     307                }
    297308        }
    298309
     
    396407                        // This is only a cleanup handler, ignore it
    397408                        __cfaabi_dbg_print_safe(" no action");
    398                 } else if (actions & _UA_CLEANUP_PHASE) {
     409                } else {
    399410                        // In clean-up phase, no destructors here but this could be the handler.
    400411
     
    434445
    435446#pragma GCC push_options
    436 #pragma GCC optimize("O0")
     447#pragma GCC optimize("no-toplevel-reorder")
    437448
    438449// Try statements are hoisted out see comments for details. While this could probably be unique
Note: See TracChangeset for help on using the changeset viewer.