# # Patch managed by http://www.holgerschurig.de/patcher.html # --- gcc-4.1.1/gcc/config/arm/lib1funcs.asm~gcc +++ gcc-4.1.1/gcc/config/arm/lib1funcs.asm @@ -995,10 +995,24 @@ .code 32 FUNC_START div0 +#if ! defined __thumb__ stmfd sp!, {r1, lr} mov r0, #SIGFPE bl SYM(raise) __PLT__ RETLDM r1 +#else + push {r1, lr} + mov r0, #SIGFPE + bl SYM(raise) __PLT__ +#if __ARM_ARCH__ > 4 + pop {r1, pc} +#else + @ on 4T that won't work + pop {r1} + pop {r3} + bx r3 +#endif +#endif FUNC_END div0 @@ -1141,11 +1155,12 @@ code here switches to the correct mode before executing the function. */ .text - .align 0 + .align 1 .force_thumb .macro call_via register THUMB_FUNC_START _call_via_\register + .hidden SYM (_call_via_\register) bx \register nop @@ -1242,6 +1257,7 @@ .code 16 THUMB_FUNC_START _interwork_call_via_\register + .hidden SYM (_interwork_call_via_\register) bx pc nop --- gcc-4.1.1/gcc/config/arm/t-linux~gcc +++ gcc-4.1.1/gcc/config/arm/t-linux @@ -7,6 +7,7 @@ LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ + _call_via_rX \ _fixsfsi _fixunssfsi _floatdidf _floatdisf _floatundisf _floatundidf # MULTILIB_OPTIONS = mhard-float/msoft-float