On Sun, Mar 08, 2020 at 06:30:06AM +0000, Rin Okuyama wrote: > Module Name: src > Committed By: rin > Date: Sun Mar 8 06:30:06 UTC 2020 > > Modified Files: > src/lib/libc/compiler_rt: Makefile.inc > > Log Message: > Fix broken printf(3) %d output for numbers more than two digits, e.g., > > printf("%d\n", 42) ---> "::" instead of "42" > > Our __{,u}modsi3 codes assume that __udivsi3 returns remainder to > %d1 (volatile register). __udivsi3 in libgcc does not, and therefore > mixing them up results in mess.
This looks like the wrong fix to me. This is not about libgcc at all. The depency in the src/common code should be fixed IMO. If __{,u}modsi3 wants to make assumptions about the remainder being implicitly computed, it really should be using the divmod primitive instead. Joerg