aboutsummaryrefslogtreecommitdiff
path: root/lib/libgcc_s
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libgcc_s')
-rw-r--r--lib/libgcc_s/Makefile55
-rw-r--r--lib/libgcc_s/Makefile.depend14
-rw-r--r--lib/libgcc_s/Symbol.map235
-rw-r--r--lib/libgcc_s/SymbolDefault.map6
-rw-r--r--lib/libgcc_s/Versions.def36
-rw-r--r--lib/libgcc_s/arm/Symbol.map85
6 files changed, 431 insertions, 0 deletions
diff --git a/lib/libgcc_s/Makefile b/lib/libgcc_s/Makefile
new file mode 100644
index 000000000000..992fc930ee9f
--- /dev/null
+++ b/lib/libgcc_s/Makefile
@@ -0,0 +1,55 @@
+PACKAGE= clibs
+SHLIB_NAME= libgcc_s.so.1
+SHLIBDIR?= /lib
+
+# Enabling UBSan triggers "undefined reference to vtable for __cxxabiv1::__function_type_info"
+MK_UBSAN:= no
+
+.include <bsd.opts.mk>
+
+MK_SSP= no
+WARNS?= 2
+
+LDFLAGS+= -nodefaultlibs
+LIBADD+= c
+
+VERSION_DEF= ${.CURDIR}/Versions.def
+SYMBOL_MAPS= ${.CURDIR}/Symbol.map
+# Export ARM AEABI unwind routines needed by libc and libthr.
+.if exists(${.CURDIR}/${MACHINE_CPUARCH}/Symbol.map)
+SYMBOL_MAPS+= ${.CURDIR}/${MACHINE_CPUARCH}/Symbol.map
+.else
+SYMBOL_MAPS+= ${.CURDIR}/SymbolDefault.map
+.endif
+
+.include "../libcompiler_rt/Makefile.inc"
+.include "../libgcc_eh/Makefile.inc"
+
+# gcc has incompatible internal declarations for __divtc3 and __multc3, but has
+# no option to silence its warning, so make warnings non-fatal.
+MK_WERROR.gcc= no
+
+LIBCSRCDIR= ${SRCTOP}/lib/libc
+LIBMSRCDIR= ${SRCTOP}/lib/msun/src
+CFLAGS+= -I${LIBCSRCDIR}/include -I${LIBCSRCDIR}/${MACHINE_CPUARCH}
+CFLAGS+= -I${LIBMSRCDIR}
+.PATH: ${LIBMSRCDIR}
+SRCS+= s_fabs.c
+SRCS+= s_fabsf.c
+SRCS+= s_fabsl.c
+SRCS+= s_fmax.c
+SRCS+= s_fmaxf.c
+SRCS+= s_logb.c
+SRCS+= s_logbf.c
+SRCS+= s_scalbn.c
+SRCS+= s_scalbnf.c
+
+# Don't include long double routines on architectures where long double
+# is the same size as double.
+.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "powerpc"
+SRCS+= s_fmaxl.c
+SRCS+= s_logbl.c
+SRCS+= s_scalbnl.c
+.endif
+
+.include <bsd.lib.mk>
diff --git a/lib/libgcc_s/Makefile.depend b/lib/libgcc_s/Makefile.depend
new file mode 100644
index 000000000000..77f8f90c31c3
--- /dev/null
+++ b/lib/libgcc_s/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libgcc_s/Symbol.map b/lib/libgcc_s/Symbol.map
new file mode 100644
index 000000000000..e8f7e824adaf
--- /dev/null
+++ b/lib/libgcc_s/Symbol.map
@@ -0,0 +1,235 @@
+/*
+ */
+
+#if defined(__LP64__) || defined(__SIZEOF_INT128__)
+#define CRT_HAS_128BIT
+#endif
+
+GCC_3.0 {
+ __absvdi2;
+ __absvsi2;
+ __addvdi3;
+ __addvsi3;
+ __ashldi3;
+ __ashrdi3;
+ __clear_cache;
+ __cmpdi2;
+#ifndef __arm__
+ __deregister_frame;
+#if !defined(__aarch64__) && !defined(__riscv)
+ __deregister_frame_info;
+ __deregister_frame_info_bases;
+#endif
+#endif
+ __divdi3;
+ __ffsdi2;
+ __fixdfdi;
+ __fixsfdi;
+ __fixunsdfdi;
+#ifndef __arm__
+ __fixunsdfsi;
+#endif
+ __fixunssfdi;
+#ifndef __arm__
+ __fixunssfsi;
+#endif
+#if defined(__amd64__) || defined(__i386__)
+ __fixunsxfdi;
+ __fixunsxfsi;
+ __fixxfdi;
+#endif
+ __floatdidf;
+ __floatdisf;
+#if defined(__amd64__) || defined(__i386__)
+ __floatdixf;
+#endif
+ __lshrdi3;
+ __moddi3;
+ __muldi3;
+ __mulvdi3;
+ __mulvsi3;
+ __negdi2;
+ __negvdi2;
+ __negvsi2;
+#ifndef __arm__
+ __register_frame;
+#if !defined(__aarch64__) && !defined(__riscv)
+ __register_frame_info;
+ __register_frame_info_bases;
+ __register_frame_info_table;
+ __register_frame_info_table_bases;
+ __register_frame_table;
+#endif
+#endif
+ __subvdi3;
+ __subvsi3;
+ __ucmpdi2;
+ __udivdi3;
+ __udivmoddi4;
+ __umoddi3;
+ _Unwind_DeleteException;
+ _Unwind_Find_FDE;
+ _Unwind_ForcedUnwind;
+ _Unwind_GetDataRelBase;
+ _Unwind_GetGR;
+ _Unwind_GetIP;
+ _Unwind_GetLanguageSpecificData;
+ _Unwind_GetRegionStart;
+ _Unwind_GetTextRelBase;
+ _Unwind_RaiseException;
+ _Unwind_Resume;
+ _Unwind_SetGR;
+ _Unwind_SetIP;
+
+#ifdef CRT_HAS_128BIT
+ __ashlti3;
+ __ashrti3;
+ __cmpti2;
+ __divti3;
+ __ffsti2;
+ __fixdfti;
+ __fixsfti;
+ __fixunsdfti;
+ __fixunssfti;
+ __floattidf;
+ __floattisf;
+ __lshrti3;
+ __modti3;
+ __multi3;
+ __negti2;
+ __ucmpti2;
+ __udivmodti4;
+ __udivti3;
+ __umodti3;
+#ifdef __amd64__
+ __fixunsxfti;
+ __fixxfti;
+ __floattixf;
+#endif
+#endif
+};
+
+GCC_3.3 {
+ _Unwind_FindEnclosingFunction;
+ _Unwind_GetCFA;
+ _Unwind_Resume_or_Rethrow;
+};
+
+GCC_3.3.1 {
+ __gcc_personality_v0;
+};
+
+GCC_3.4 {
+ __clzdi2;
+ __clzsi2;
+ __ctzdi2;
+ __ctzsi2;
+ __paritydi2;
+ __paritysi2;
+ __popcountdi2;
+ __popcountsi2;
+
+#ifdef CRT_HAS_128BIT
+ __clzti2;
+ __ctzti2;
+ __parityti2;
+ __popcountti2;
+#endif
+};
+
+GCC_3.4.2 {
+ __enable_execute_stack;
+};
+
+GCC_3.4.4 {
+#ifdef CRT_HAS_128BIT
+ __absvti2;
+ __addvti3;
+ __mulvti3;
+ __negvti2;
+ __subvti3;
+#endif
+};
+
+GCC_4.0.0 {
+ __divdc3;
+ __divsc3;
+#if defined(__amd64__) || defined(__i386__)
+ __divxc3;
+#endif
+ __muldc3;
+ __mulsc3;
+#if defined(__amd64__) || defined(__i386__)
+ __mulxc3;
+#endif
+ __powidf2;
+ __powisf2;
+#if defined(__amd64__) || defined(__i386__)
+ __powixf2;
+#endif
+};
+
+GCC_4.2.0 {
+ __floatundidf;
+ __floatundisf;
+#if defined(__amd64__) || defined(__i386__)
+ __floatundixf;
+#endif
+ _Unwind_GetIPInfo;
+
+#ifdef CRT_HAS_128BIT
+ __floatuntidf;
+ __floatuntisf;
+#ifdef __amd64__
+ __floatuntixf;
+#endif
+#endif
+};
+
+GCC_4.3.0 {
+ __bswapdi2;
+ __bswapsi2;
+};
+
+GCC_4.6.0 {
+#if defined(__aarch64__) || defined(__riscv)
+ __addtf3;
+ __cmptf2;
+ __divtf3;
+ __eqtf2;
+ __extenddftf2;
+ __extendsftf2;
+ __fixtfdi;
+ __fixtfsi;
+ __fixtfti;
+ __fixunstfdi;
+ __fixunstfsi;
+ __fixunstfti;
+ __floatditf;
+ __floatsitf;
+ __floattitf;
+ __floatunditf;
+ __floatunsitf;
+ __floatuntitf;
+ __getf2;
+ __gttf2;
+ __letf2;
+ __lttf2;
+ __multf3;
+ __netf2;
+ __subtf3;
+ __trunctfdf2;
+ __trunctfsf2;
+ __unordtf2;
+#endif
+#if defined(__amd64__)
+ __extendxftf2;
+ __trunctfxf2;
+#endif
+};
+
+GCC_7.0.0 {
+#ifdef __i386__
+ __divmoddi4;
+#endif
+};
diff --git a/lib/libgcc_s/SymbolDefault.map b/lib/libgcc_s/SymbolDefault.map
new file mode 100644
index 000000000000..8563b26efa18
--- /dev/null
+++ b/lib/libgcc_s/SymbolDefault.map
@@ -0,0 +1,6 @@
+/*
+ */
+/* _Unwind_Backtrace should be exported with different version on ARM */
+GCC_3.3 {
+ _Unwind_Backtrace;
+};
diff --git a/lib/libgcc_s/Versions.def b/lib/libgcc_s/Versions.def
new file mode 100644
index 000000000000..526387e055df
--- /dev/null
+++ b/lib/libgcc_s/Versions.def
@@ -0,0 +1,36 @@
+
+GCC_3.0 {
+};
+
+GCC_3.3 {
+} GCC_3.0;
+
+GCC_3.3.1 {
+} GCC_3.3;
+
+GCC_3.4 {
+} GCC_3.3.1;
+
+GCC_3.4.2 {
+} GCC_3.4;
+
+GCC_3.4.4 {
+} GCC_3.4.2;
+
+GCC_3.5 {
+} GCC_3.4.4;
+
+GCC_4.0.0 {
+} GCC_3.5;
+
+GCC_4.2.0 {
+} GCC_4.0.0;
+
+GCC_4.3.0 {
+} GCC_4.2.0;
+
+GCC_4.6.0 {
+} GCC_4.3.0;
+
+GCC_7.0.0 {
+} GCC_4.6.0;
diff --git a/lib/libgcc_s/arm/Symbol.map b/lib/libgcc_s/arm/Symbol.map
new file mode 100644
index 000000000000..ea0189eabaa0
--- /dev/null
+++ b/lib/libgcc_s/arm/Symbol.map
@@ -0,0 +1,85 @@
+/*
+ */
+
+GCC_3.5 {
+ __aeabi_cdcmple;
+ __aeabi_cdrcmple;
+ __aeabi_cfcmpeq;
+ __aeabi_cfcmple;
+ __aeabi_cfrcmple;
+ __aeabi_d2f;
+ __aeabi_d2h;
+/* __aeabi_d2h_alt; */
+ __aeabi_d2iz;
+ __aeabi_d2lz;
+ __aeabi_d2uiz;
+ __aeabi_d2ulz;
+ __aeabi_dadd;
+ __aeabi_dcmpeq;
+ __aeabi_dcmpge;
+ __aeabi_dcmpgt;
+ __aeabi_dcmple;
+ __aeabi_dcmplt;
+ __aeabi_dcmpun;
+ __aeabi_ddiv;
+ __aeabi_dmul;
+ __aeabi_dneg;
+ __aeabi_drsub;
+ __aeabi_dsub;
+ __aeabi_f2d;
+ __aeabi_f2h;
+/* __aeabi_f2h_alt; */
+ __aeabi_f2iz;
+ __aeabi_f2lz;
+ __aeabi_f2uiz;
+ __aeabi_f2ulz;
+ __aeabi_fadd;
+ __aeabi_fcmpeq;
+ __aeabi_fcmpge;
+ __aeabi_fcmpgt;
+ __aeabi_fcmple;
+ __aeabi_fcmplt;
+ __aeabi_fcmpun;
+ __aeabi_fdiv;
+ __aeabi_fmul;
+ __aeabi_fneg;
+ __aeabi_frsub;
+ __aeabi_fsub;
+ __aeabi_h2f;
+/* __aeabi_h2f_alt; */
+ __aeabi_i2d;
+ __aeabi_i2f;
+ __aeabi_idiv;
+ __aeabi_idiv0;
+ __aeabi_idivmod;
+ __aeabi_l2d;
+ __aeabi_l2f;
+ __aeabi_lasr;
+ __aeabi_lcmp;
+ __aeabi_ldiv0;
+ __aeabi_ldivmod;
+ __aeabi_llsl;
+ __aeabi_llsr;
+ __aeabi_lmul;
+ __aeabi_ui2d;
+ __aeabi_ui2f;
+ __aeabi_uidiv;
+ __aeabi_uidivmod;
+ __aeabi_ul2d;
+ __aeabi_ul2f;
+ __aeabi_ulcmp;
+ __aeabi_uldivmod;
+
+ _Unwind_Complete;
+ _Unwind_VRS_Get;
+ _Unwind_VRS_Set;
+ _Unwind_VRS_Pop;
+ __aeabi_unwind_cpp_pr0;
+ __aeabi_unwind_cpp_pr1;
+ __aeabi_unwind_cpp_pr2;
+ __gnu_unwind_frame;
+};
+
+GCC_4.3.0 {
+ _Unwind_Backtrace;
+};