Re: [Tinycc-devel] where are the functions?
To link with Windows system DLLs, TCC uses import definition files (.def) instead of libraries. I have downloaded the version you mention and in the directory tcc\lib there are files 17. 12. 2017. 09:27 5.052 gdi32.def 17. 12. 2017. 09:2712.882 kernel32.def 17. 12. 2017. 09:2726.866 libtcc1-32.a 17. 12. 2017. 09:2741.706 libtcc1-64.a 17. 12. 2017. 09:2715.880 msvcrt.def 17. 12. 2017. 09:2710.439 user32.def All your functions missing are either from user32 or gdi32, so most probably you used the wrong -L parameter. Try; tcc\tcc test.c -luser32 -lgdi32 or even plain tcc\tcc test.c On Sun, Sep 10, 2023 at 4:05 PM Dieter Dewald wrote: >10.09.2023 > i used tcc-0.9.27-win64-bin.zip, > i written #include else no include, > but i got this error-message: > > tcc: error: undefined symbol 'DefWindowProcA' > tcc: error: undefined symbol 'LoadIconA' > tcc: error: undefined symbol 'RegisterClassA' > tcc: error: undefined symbol 'CreateWindowExA' > tcc: error: undefined symbol 'ShowWindow' > tcc: error: undefined symbol 'UpdateWindow' > tcc: error: undefined symbol 'DestroyWindow' > tcc: error: undefined symbol 'RegisterClassExA' > tcc: error: undefined symbol 'MoveWindow' > tcc: error: undefined symbol 'GetDC' > tcc: error: undefined symbol 'BeginPaint' > tcc: error: undefined symbol 'EndPaint' > tcc: error: undefined symbol 'ReleaseDC' > tcc: error: undefined symbol 'SetTextColor' > tcc: error: undefined symbol 'SetBkColor' > tcc: error: undefined symbol 'SetBKMode' > tcc: error: undefined symbol 'CreateFontA' > tcc: error: undefined symbol 'SelectObject' > tcc: error: undefined symbol 'DeleteObject' > tcc: error: undefined symbol 'SetPixel' > tcc: error: undefined symbol 'CreateSolidBrush' > tcc: error: undefined symbol 'FillRect' > tcc: error: undefined symbol 'TextOutA' > tcc: error: undefined symbol 'PeekMessageA' > tcc: error: undefined symbol 'GetAsyncKeyState' > tcc: error: undefined symbol 'GetSystemMetrics' > tcc: error: undefined symbol 'main' > > i have no main, and i written the functions without A > > ___ > Tinycc-devel mailing list > Tinycc-devel@nongnu.org > https://lists.nongnu.org/mailman/listinfo/tinycc-devel > ___ Tinycc-devel mailing list Tinycc-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/tinycc-devel
[Tinycc-devel] [PATCH] Eliminate call to memset() on x86-64 when zeroing an array
See thread "win32: -Wl,-nostdlib: undefined symbol 'memset'" This patch has been tested on x86-64 Alpine (musl) and all tests are passed. I do not have a Windows platform, so many thanks if someone could help me test it. --- tccgen.c | 5 + x86_64-gen.c | 38 ++ 2 files changed, 43 insertions(+) diff --git a/tccgen.c b/tccgen.c index fd0680f..da07675 100644 --- a/tccgen.c +++ b/tccgen.c @@ -7373,6 +7373,10 @@ static void init_putz(init_params *p, unsigned long c, int size) if (p->sec) { /* nothing to do because globals are already set to zero */ } else { +#ifdef TCC_TARGET_NATIVE_PUT_ZERO +vseti(VT_LOCAL, c); +gen_put_zero(size); +#else vpush_helper_func(TOK_memset); vseti(VT_LOCAL, c); #ifdef TCC_TARGET_ARM @@ -7383,6 +7387,7 @@ static void init_putz(init_params *p, unsigned long c, int size) vpushs(size); #endif gfunc_call(3); +#endif } } diff --git a/x86_64-gen.c b/x86_64-gen.c index e04df10..fae6f54 100644 --- a/x86_64-gen.c +++ b/x86_64-gen.c @@ -109,7 +109,9 @@ enum { #define PROMOTE_RET #define TCC_TARGET_NATIVE_STRUCT_COPY +#define TCC_TARGET_NATIVE_PUT_ZERO ST_FUNC void gen_struct_copy(int size); +ST_FUNC void gen_put_zero(int size); /**/ #else /* ! TARGET_DEFS_ONLY */ @@ -2325,6 +2327,42 @@ ST_FUNC void gen_struct_copy(int size) vpop(); } +ST_FUNC void gen_put_zero(int size) +{ +int n = size / PTR_SIZE; + +#ifdef TCC_TARGET_PE +o(0x57); /* push rdi */ +#endif + +vpushi(0); +gv2(RC_RDI, RC_RAX); + +if (n <= 4) { +for (; n; n--) +o(0xab48); +} else { +vpushi(n); +gv(RC_RCX); +o(0xab48f3); + vpop(); +} + +if (size & 0x04) +o(0xab); +if (size & 0x02) +o(0xab66); +if (size & 0x01) +o(0xaa); + +#ifdef TCC_TARGET_PE + o(0x5f); /* pop rdi */ +#endif + + vpop(); + vpop(); +} + /* end of x86-64 code generator */ /*/ #endif /* ! TARGET_DEFS_ONLY */ -- 2.42.0 ___ Tinycc-devel mailing list Tinycc-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/tinycc-devel
Re: [Tinycc-devel] Re : Re: win32: -Wl,-nostdlib: undefined symbol 'memset'
The issue is bigger than just memset. I found at least 5 more functions which are required in some cases, not all of them part of stdlib, and I'm guessing sure there are more, depending on the platform. For instance: // test3.c --- typedef struct { int a, b; } S; void _start(void) { S x = {0}; // requires memset with i386, x86-64 int z[x.a]; // requires alloca with i386, x86-64 (on win32, not linux) S y = x; // requires memmove with i386 long long llng; llng /= 2; // requires __divdi3 with i386 llng %= 2; // requires __moddi3 with i386 *z *= 1.0; // requires __fixdfdi with i386 } // --- Then compile using: tcc -Wl,-nostdlib test3.c Result on windows, as i386: tcc: error: undefined symbol 'memset' tcc: error: undefined symbol 'alloca' tcc: error: undefined symbol 'memmove' tcc: error: undefined symbol '__divdi3' tcc: error: undefined symbol '__moddi3' tcc: error: undefined symbol '__fixdfdi' So even if memset and memmove can be provided by the user, others are not standard and undocumented (__divdi3 does not appear in C99), while some might not even be possible - how can the user provide an alloca implementation which allocates on the stack which tcc manages? Looking at the gcc docs, it includes this about -nostdlib: > The compiler may generate calls to "memcmp", "memset", "memcpy" > and "memmove". These entries are usually resolved by entries in > libc. These entry points should be supplied through some other > mechanism when this option is specified. So even if not very friendly (because this is the very thing which the compiler is supposed to compiled into machine code...), at least it's well defined what the user should provide in such case. But in the case of tcc, it's not documented, and seems to go quite a bit further than what gcc requires, to the point which makes this option completely impractical for tcc end users. - avih On Sunday, September 10, 2023 at 01:51:14 PM GMT+3, Ziyao via Tinycc-devel wrote: On 2023-09-10 15:13, Страхиња Радић wrote: > What is weird is that tcc requires a libc function, memset, when none > is > explicitly requested, when for example this code: It is not that weird I think. Early versions of GCC generates a call to memset() as well when zeroing a block of memory [1] btw, the call could be easily eliminated by add a function like gen_struct_copy() in x86_64-gen.c. And this call may lead to problems. For example, the dynamic linker of musl has code that zeros a structure, but at that time memset() has not been relocated, result in a segfault. -- Ziyao [1]: check for clear_storage() in gcc/expr.c of commit 3b6f75e2 of gcc ___ Tinycc-devel mailing list Tinycc-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/tinycc-devel ___ Tinycc-devel mailing list Tinycc-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/tinycc-devel
Re: [Tinycc-devel] Re : Re: win32: -Wl,-nostdlib: undefined symbol 'memset'
On 11.09.2023 14:41, avih via Tinycc-devel wrote: But in the case of tcc, it's not documented, and seems to go quite a bit further than what gcc requires libgcc.a from mingw-gcc-6.3.0 is 6218 kB, all full with according to your standards "undocumented" stuff that however gcc surely will require under certain circumstances and will miss when -nostdlib given. List follows: _chkstk.o___chkstk _chkstk.o__alloca _chkstk_ms.o___chkstk_ms _muldi3.o___muldi3 _negdi2.o___negdi2 _lshrdi3.o___lshrdi3 _ashldi3.o___ashldi3 _ashrdi3.o___ashrdi3 _cmpdi2.o___cmpdi2 _ucmpdi2.o___ucmpdi2 _clear_cache.o___clear_cache _trampoline.o_getpagesize _trampoline.o_mprotect __main.o___do_global_dtors __main.o___do_global_ctors __main.o___main _absvsi2.o___absvsi2 _absvdi2.o___absvdi2 _addvsi3.o___addvsi3 _addvdi3.o___addvdi3 _subvsi3.o___subvsi3 _subvdi3.o___subvdi3 _mulvsi3.o___mulvsi3 _mulvdi3.o___mulvdi3 _negvsi2.o___negvsi2 _negvdi2.o___negvdi2 _ctors.o___DTOR_LIST__ _ctors.o___CTOR_LIST__ _ffssi2.o___ffssi2 _ffsdi2.o___ffsdi2 _clz.o___clz_tab _clzsi2.o___clzsi2 _clzdi2.o___clzdi2 _ctzsi2.o___ctzsi2 _ctzdi2.o___ctzdi2 _popcount_tab.o___popcount_tab _popcountsi2.o___popcountsi2 _popcountdi2.o___popcountdi2 _paritysi2.o___paritysi2 _paritydi2.o___paritydi2 _powisf2.o___powisf2 _powidf2.o___powidf2 _powixf2.o___powixf2 _powitf2.o___powitf2 _mulsc3.o___mulsc3 _muldc3.o___muldc3 _mulxc3.o___mulxc3 _multc3.o___multc3 _divsc3.o___divsc3 _divdc3.o___divdc3 _divxc3.o___divxc3 _divtc3.o___divtc3 _bswapsi2.o___bswapsi2 _bswapdi2.o___bswapdi2 _clrsbsi2.o___clrsbsi2 _clrsbdi2.o___clrsbdi2 _fixunssfsi.o___fixunssfsi _fixunsdfsi.o___fixunsdfsi _fixunsxfsi.o___fixunsxfsi _fixsfdi.o___fixsfdi _fixdfdi.o___fixdfdi _fixxfdi.o___fixxfdi _fixunssfdi.o___fixunssfdi _fixunsdfdi.o___fixunsdfdi _fixunsxfdi.o___fixunsxfdi _floatdisf.o___floatdisf _floatdidf.o___floatdidf _floatdixf.o___floatdixf _floatundisf.o___floatundisf _floatundidf.o___floatundidf _floatundixf.o___floatundixf _eprintf.o___eprintf __gcc_bcmp.o___gcc_bcmp _divdi3.o___divdi3 _moddi3.o___moddi3 _udivdi3.o___udivdi3 _umoddi3.o___umoddi3 _udiv_w_sdiv.o___udiv_w_sdiv _udivmoddi4.o___udivmoddi4 bid_decimal_globals.o___dfp_set_round bid_decimal_globals.o___dfp_get_round bid_decimal_globals.o___dfp_clear_except bid_decimal_globals.o___dfp_test_except bid_decimal_globals.o___dfp_raise_except bid_decimal_globals.o___bid_IDEC_glbround bid_decimal_globals.o___bid_IDEC_glbflags bid_decimal_data.o___bid_power10_index_binexp_128 bid_decimal_data.o___bid_reciprocals10_64 bid_decimal_data.o___bid_short_recip_scale bid_decimal_data.o___bid_power10_index_binexp bid_decimal_data.o___bid_estimate_bin_expon bid_decimal_data.o___bid_power10_table_128 bid_decimal_data.o___bid_estimate_decimal_digits bid_decimal_data.o___bid_recip_scale bid_decimal_data.o___bid_reciprocals10_128 bid_decimal_data.o___bid_round_const_table_128 bid_decimal_data.o___bid_round_const_table bid_binarydecimal.o___bid32_to_binary32 bid_binarydecimal.o___bid64_to_binary32 bid_binarydecimal.o___bid128_to_binary32 bid_binarydecimal.o___bid32_to_binary64 bid_binarydecimal.o___bid64_to_binary64 bid_binarydecimal.o___bid128_to_binary64 bid_binarydecimal.o___bid32_to_binary80 bid_binarydecimal.o___bid64_to_binary80 bid_binarydecimal.o___bid128_to_binary80 bid_binarydecimal.o___bid32_to_binary128 bid_binarydecimal.o___bid64_to_binary128 bid_binarydecimal.o___bid128_to_binary128 bid_binarydecimal.o___binary32_to_bid32 bid_binarydecimal.o___binary64_to_bid32 bid_binarydecimal.o___binary80_to_bid32 bid_binarydecimal.o___binary128_to_bid32 bid_binarydecimal.o___binary32_to_bid64 bid_binarydecimal.o___binary64_to_bid64 bid_binarydecimal.o___binary80_to_bid64 bid_binarydecimal.o___binary128_to_bid64 bid_binarydecimal.o___binary32_to_bid128 bid_binarydecimal.o___binary64_to_bid128 bid_binarydecimal.o___binary80_to_bid128 bid_binarydecimal.o___binary128_to_bid128 bid_convert_data.o___bid_factors bid_convert_data.o___bid_packed_1_zeros bid_convert_data.o___bid_convert_table _isinfd32.o_isinfd32 _isinfd64.o_isinfd64 _isinfd128.o_isinfd128 bid64_noncomp.o___bid64_isSigned bid64_noncomp.o___bid64_isNormal bid64_noncomp.o___bid64_isSubnormal bid64_noncomp.o___bid64_isFinite bid64_noncomp.o___bid64_isZero bid64_noncomp.o___bid64_isInf bid64_noncomp.o___bid64_isSignaling bid64_noncomp.o___bid64_isCanonical bid64_noncomp.o___bid64_isNaN bid64_noncomp.o___bid64_copy bid64_noncomp.o___bid64_negate bid64_noncom
[Tinycc-devel] Re : Re: Re : Re: win32: -Wl,-nostdlib: undefined symbol 'memset'
Thank, that's valuable information in one place. Regards. - Mail d'origine - De: grischka À: tinycc-devel@nongnu.org Envoyé: Mon, 11 Sep 2023 21:31:24 +0200 (CEST) Objet: Re: [Tinycc-devel] Re : Re: win32: -Wl,-nostdlib: undefined symbol 'memset' On 11.09.2023 14:41, avih via Tinycc-devel wrote: > But in the case of tcc, it's not documented, and seems to go > quite a bit further than what gcc requires libgcc.a from mingw-gcc-6.3.0 is 6218 kB, all full with according to your standards "undocumented" stuff that however gcc surely will require under certain circumstances and will miss when -nostdlib given. List follows: _chkstk.o___chkstk _chkstk.o__alloca _chkstk_ms.o___chkstk_ms _muldi3.o___muldi3 _negdi2.o___negdi2 _lshrdi3.o___lshrdi3 _ashldi3.o___ashldi3 _ashrdi3.o___ashrdi3 _cmpdi2.o___cmpdi2 _ucmpdi2.o___ucmpdi2 _clear_cache.o___clear_cache _trampoline.o_getpagesize _trampoline.o_mprotect __main.o___do_global_dtors __main.o___do_global_ctors __main.o___main _absvsi2.o___absvsi2 _absvdi2.o___absvdi2 _addvsi3.o___addvsi3 _addvdi3.o___addvdi3 _subvsi3.o___subvsi3 _subvdi3.o___subvdi3 _mulvsi3.o___mulvsi3 _mulvdi3.o___mulvdi3 _negvsi2.o___negvsi2 _negvdi2.o___negvdi2 _ctors.o___DTOR_LIST__ _ctors.o___CTOR_LIST__ _ffssi2.o___ffssi2 _ffsdi2.o___ffsdi2 _clz.o___clz_tab _clzsi2.o___clzsi2 _clzdi2.o___clzdi2 _ctzsi2.o___ctzsi2 _ctzdi2.o___ctzdi2 _popcount_tab.o___popcount_tab _popcountsi2.o___popcountsi2 _popcountdi2.o___popcountdi2 _paritysi2.o___paritysi2 _paritydi2.o___paritydi2 _powisf2.o___powisf2 _powidf2.o___powidf2 _powixf2.o___powixf2 _powitf2.o___powitf2 _mulsc3.o___mulsc3 _muldc3.o___muldc3 _mulxc3.o___mulxc3 _multc3.o___multc3 _divsc3.o___divsc3 _divdc3.o___divdc3 _divxc3.o___divxc3 _divtc3.o___divtc3 _bswapsi2.o___bswapsi2 _bswapdi2.o___bswapdi2 _clrsbsi2.o___clrsbsi2 _clrsbdi2.o___clrsbdi2 _fixunssfsi.o___fixunssfsi _fixunsdfsi.o___fixunsdfsi _fixunsxfsi.o___fixunsxfsi _fixsfdi.o___fixsfdi _fixdfdi.o___fixdfdi _fixxfdi.o___fixxfdi _fixunssfdi.o___fixunssfdi _fixunsdfdi.o___fixunsdfdi _fixunsxfdi.o___fixunsxfdi _floatdisf.o___floatdisf _floatdidf.o___floatdidf _floatdixf.o___floatdixf _floatundisf.o___floatundisf _floatundidf.o___floatundidf _floatundixf.o___floatundixf _eprintf.o___eprintf __gcc_bcmp.o___gcc_bcmp _divdi3.o___divdi3 _moddi3.o___moddi3 _udivdi3.o___udivdi3 _umoddi3.o___umoddi3 _udiv_w_sdiv.o___udiv_w_sdiv _udivmoddi4.o___udivmoddi4 bid_decimal_globals.o___dfp_set_round bid_decimal_globals.o___dfp_get_round bid_decimal_globals.o___dfp_clear_except bid_decimal_globals.o___dfp_test_except bid_decimal_globals.o___dfp_raise_except bid_decimal_globals.o___bid_IDEC_glbround bid_decimal_globals.o___bid_IDEC_glbflags bid_decimal_data.o___bid_power10_index_binexp_128 bid_decimal_data.o___bid_reciprocals10_64 bid_decimal_data.o___bid_short_recip_scale bid_decimal_data.o___bid_power10_index_binexp bid_decimal_data.o___bid_estimate_bin_expon bid_decimal_data.o___bid_power10_table_128 bid_decimal_data.o___bid_estimate_decimal_digits bid_decimal_data.o___bid_recip_scale bid_decimal_data.o___bid_reciprocals10_128 bid_decimal_data.o___bid_round_const_table_128 bid_decimal_data.o___bid_round_const_table bid_binarydecimal.o___bid32_to_binary32 bid_binarydecimal.o___bid64_to_binary32 bid_binarydecimal.o___bid128_to_binary32 bid_binarydecimal.o___bid32_to_binary64 bid_binarydecimal.o___bid64_to_binary64 bid_binarydecimal.o___bid128_to_binary64 bid_binarydecimal.o___bid32_to_binary80 bid_binarydecimal.o___bid64_to_binary80 bid_binarydecimal.o___bid128_to_binary80 bid_binarydecimal.o___bid32_to_binary128 bid_binarydecimal.o___bid64_to_binary128 bid_binarydecimal.o___bid128_to_binary128 bid_binarydecimal.o___binary32_to_bid32 bid_binarydecimal.o___binary64_to_bid32 bid_binarydecimal.o___binary80_to_bid32 bid_binarydecimal.o___binary128_to_bid32 bid_binarydecimal.o___binary32_to_bid64 bid_binarydecimal.o___binary64_to_bid64 bid_binarydecimal.o___binary80_to_bid64 bid_binarydecimal.o___binary128_to_bid64 bid_binarydecimal.o___binary32_to_bid128 bid_binarydecimal.o___binary64_to_bid128 bid_binarydecimal.o___binary80_to_bid128 bid_binarydecimal.o___binary128_to_bid128 bid_convert_data.o___bid_factors bid_convert_data.o___bid_packed_1_zeros bid_convert_data.o___bid_convert_table _isinfd32.o_isinfd32 _isinfd64.o_isinfd64 _isinfd128.o_isinfd128 bid64_noncomp.o___bid64_isSigned bid64_noncomp.o___bid64_isNormal bid64_noncomp.o___bid64_isSubnormal bid64_noncomp.o___bid64_isFinite bi
Re: [Tinycc-devel] Re : Re: win32: -Wl,-nostdlib: undefined symbol 'memset'
Thanks. I was going by the official gcc docs. I did not test what it requires beyond those mem* implementations. Back to tcc, the current help for nostdlib is: > -nostdlib do not link with standard crt and libraries Would that be fair to change it to something like: > -nostdlib do not link with standard crt and libraries > may require memset, memmove, and linking with -ltcc1 That's apriori. Linking with libtcc1.a seems to address all the missing symbols in my example except memset and memmove. Are there others? like memcmp or memcpy which the gcc docs mention? or maybe even more beyond those? Should the mem* functions and libtcc1 cover these linking issues, assuming the user code doesn't use the crt and stdlib? - avih On Monday, September 11, 2023 at 10:32:26 PM GMT+3, grischka wrote: On 11.09.2023 14:41, avih via Tinycc-devel wrote: > But in the case of tcc, it's not documented, and seems to go > quite a bit further than what gcc requires libgcc.a from mingw-gcc-6.3.0 is 6218 kB, all full with according to your standards "undocumented" stuff that however gcc surely will require under certain circumstances and will miss when -nostdlib given. List follows: _chkstk.o ___chkstk _chkstk.o __alloca _chkstk_ms.o ___chkstk_ms _muldi3.o ___muldi3 _negdi2.o ___negdi2 _lshrdi3.o ___lshrdi3 _ashldi3.o ___ashldi3 _ashrdi3.o ___ashrdi3 _cmpdi2.o ___cmpdi2 _ucmpdi2.o ___ucmpdi2 _clear_cache.o ___clear_cache _trampoline.o _getpagesize _trampoline.o _mprotect __main.o ___do_global_dtors __main.o ___do_global_ctors __main.o ___main _absvsi2.o ___absvsi2 _absvdi2.o ___absvdi2 _addvsi3.o ___addvsi3 _addvdi3.o ___addvdi3 _subvsi3.o ___subvsi3 _subvdi3.o ___subvdi3 _mulvsi3.o ___mulvsi3 _mulvdi3.o ___mulvdi3 _negvsi2.o ___negvsi2 _negvdi2.o ___negvdi2 _ctors.o ___DTOR_LIST__ _ctors.o ___CTOR_LIST__ _ffssi2.o ___ffssi2 _ffsdi2.o ___ffsdi2 _clz.o ___clz_tab _clzsi2.o ___clzsi2 _clzdi2.o ___clzdi2 _ctzsi2.o ___ctzsi2 _ctzdi2.o ___ctzdi2 _popcount_tab.o ___popcount_tab _popcountsi2.o ___popcountsi2 _popcountdi2.o ___popcountdi2 _paritysi2.o ___paritysi2 _paritydi2.o ___paritydi2 _powisf2.o ___powisf2 _powidf2.o ___powidf2 _powixf2.o ___powixf2 _powitf2.o ___powitf2 _mulsc3.o ___mulsc3 _muldc3.o ___muldc3 _mulxc3.o ___mulxc3 _multc3.o ___multc3 _divsc3.o ___divsc3 _divdc3.o ___divdc3 _divxc3.o ___divxc3 _divtc3.o ___divtc3 _bswapsi2.o ___bswapsi2 _bswapdi2.o ___bswapdi2 _clrsbsi2.o ___clrsbsi2 _clrsbdi2.o ___clrsbdi2 _fixunssfsi.o ___fixunssfsi _fixunsdfsi.o ___fixunsdfsi _fixunsxfsi.o ___fixunsxfsi _fixsfdi.o ___fixsfdi _fixdfdi.o ___fixdfdi _fixxfdi.o ___fixxfdi _fixunssfdi.o ___fixunssfdi _fixunsdfdi.o ___fixunsdfdi _fixunsxfdi.o ___fixunsxfdi _floatdisf.o ___floatdisf _floatdidf.o ___floatdidf _floatdixf.o ___floatdixf _floatundisf.o ___floatundisf _floatundidf.o ___floatundidf _floatundixf.o ___floatundixf _eprintf.o ___eprintf __gcc_bcmp.o ___gcc_bcmp _divdi3.o ___divdi3 _moddi3.o ___moddi3 _udivdi3.o ___udivdi3 _umoddi3.o ___umoddi3 _udiv_w_sdiv.o ___udiv_w_sdiv _udivmoddi4.o ___udivmoddi4 bid_decimal_globals.o ___dfp_set_round bid_decimal_globals.o ___dfp_get_round bid_decimal_globals.o ___dfp_clear_except bid_decimal_globals.o ___dfp_test_except bid_decimal_globals.o ___dfp_raise_except bid_decimal_globals.o ___bid_IDEC_glbround bid_decimal_globals.o ___bid_IDEC_glbflags bid_decimal_data.o ___bid_power10_index_binexp_128 bid_decimal_data.o ___bid_reciprocals10_64 bid_decimal_data.o ___bid_short_recip_scale bid_decimal_data.o ___bid_power10_index_binexp bid_decimal_data.o ___bid_estimate_bin_expon bid_decimal_data.o ___bid_power10_table_128 bid_decimal_data.o ___bid_estimate_decimal_digits bid_decimal_data.o ___bid_recip_scale bid_decimal_data.o ___bid_reciprocals10_128 bid_decimal_data.o ___bid_round_const_table_128 bid_decimal_data.o ___bid_round_const_table bid_binarydecimal.o ___bid32_to_binary32 bid_binarydecimal.o ___bid64_to_binary32 bid_binarydecimal.o ___bid128_to_binary32 bid_binarydecimal.o ___bid32_to_binary64 bid_binarydecimal.o ___bid64_to_binary64 bid_binarydecimal.o ___bid128_to_binary64 bid_binarydecimal.o ___bid32_to_binary80 bid_binarydecimal.o ___bid64_to_binary80 bid_binarydecimal.o ___bid128_to_binary80 bid_binarydecimal.o ___bid32_to_binary128 bid_binarydecimal.o ___bid64_to_binary128 bid_binarydecimal.o ___bid128_to_binary128 bid_binarydecimal.o ___binary32_to_bid32 bid_binarydecimal.o ___binary64_to_bid32 bid_binarydecimal.o ___binary80_to_bid32 bid_binarydecimal.o ___binary128_to_bid32 bid_binarydecimal.o ___binary32_to_bid64 bid_binarydecimal.o ___binary64_to_bid64 bid_binarydecimal.o ___binary80_to_bid64 bid_binarydecimal.o _