]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update SPARC divrem generation to match output.
authorJoseph Myers <joseph@codesourcery.com>
Fri, 15 Dec 2017 14:06:07 +0000 (14:06 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Fri, 15 Dec 2017 14:06:07 +0000 (14:06 +0000)
While working on another patch I noticed that (a)
sysdeps/sparc/sparc32/Makefile is the only place with special
realclean settings, apart from po/, and (b) the generated files with a
rule in that Makefile to generate them (using m4) had been patched
manually so no longer corresponded with the output of the generator -
so if the timestamps were wrong, a build would result in changes to
the files in the source directory.  (They also didn't correspond
because of changes in make 3.81 to how make handles whitespace at the
start of a line in a sequence of backslash-newline continuation lines
within a recipe.)

This patch fixes the generation and output files to match.  The issue
with make and whitespace at start of continuation lines is fixed by
putting those newlines outside of arguments to echo, so the number of
spaces in the argument matches the number in the existing generated
files.  Then divrem.m4 is changed to avoid generating whitespace-only
lines (my fix to the outputs from 2013; this fix to the generator also
changes the indentation of a label in the output files) and to
generate an alias in udiv.S (Adhemerval's fix from March).

build-many-glibcs.py doesn't have a non-v9 SPARC configuration,
because non-v9 32-bit SPARC didn't build when I set up
build-many-glibcs.py but sparcv9 did build.  Whether or not non-v9
32-bit SPARC now builds (or indeed whether or not support for it is
obsolete), I tested by removing the sparcv8 and sparcv9 versions of
the four files in question, so forcing the generated files to be built
and used, and the compilation parts of the glibc testsuite passed.

* sysdeps/sparc/sparc32/Makefile
($(divrem:%=$(sysdep_dir)/sparc/sparc32/%.S)): Do not include
start-of-line whitespace in argument of echo.
* sysdeps/sparc/sparc32/divrem.m4: Avoid generating lines starting
with whitespace.  Generate __wrap_.udiv alias.
* sysdeps/sparc/sparc32/rem.S: Regenerated.
* sysdeps/sparc/sparc32/sdiv.S: Likewise.
* sysdeps/sparc/sparc32/udiv.S: Likewise.
* sysdeps/sparc/sparc32/urem.S: Likewise.

ChangeLog
sysdeps/sparc/sparc32/Makefile
sysdeps/sparc/sparc32/divrem.m4
sysdeps/sparc/sparc32/rem.S
sysdeps/sparc/sparc32/sdiv.S
sysdeps/sparc/sparc32/udiv.S
sysdeps/sparc/sparc32/urem.S

index a993af3ecbe068808d96400c7d5e7653a392e685..cc4e2996abf121debe4523f83db426d797af749d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2017-12-15  Joseph Myers  <joseph@codesourcery.com>
+
+       * sysdeps/sparc/sparc32/Makefile
+       ($(divrem:%=$(sysdep_dir)/sparc/sparc32/%.S)): Do not include
+       start-of-line whitespace in argument of echo.
+       * sysdeps/sparc/sparc32/divrem.m4: Avoid generating lines starting
+       with whitespace.  Generate __wrap_.udiv alias.
+       * sysdeps/sparc/sparc32/rem.S: Regenerated.
+       * sysdeps/sparc/sparc32/sdiv.S: Likewise.
+       * sysdeps/sparc/sparc32/udiv.S: Likewise.
+       * sysdeps/sparc/sparc32/urem.S: Likewise.
+
 2017-12-15  Rajalakshmi Srinivasaraghavan  <raji@linux.vnet.ibm.com>
 
        * sysdeps/powerpc/powerpc64/power8/strcpy.S: Use vectors
index 14d6e03c6f16e95ec3df96e0fbb6435bcf3cead7..eb0438ae5097b3d33a2e8c2df772ab0ef16d754e 100644 (file)
@@ -37,10 +37,10 @@ divrem := sdiv udiv rem urem
 +divrem-S-udiv := false
 +divrem-S-urem := false
 $(divrem:%=$(sysdep_dir)/sparc/sparc32/%.S): $(sysdep_dir)/sparc/sparc32/divrem.m4
-       (echo "define(NAME,\`.$(+divrem-NAME)')\
-              define(OP,\`$(+divrem-OP-$(+divrem-NAME))')\
-              define(S,\`$(+divrem-S-$(+divrem-NAME))')\
-              /* This file is generated from divrem.m4; DO NOT EDIT! */"; \
+       (echo -n "define(NAME,\`.$(+divrem-NAME)')"; \
+        echo -n " define(OP,\`$(+divrem-OP-$(+divrem-NAME))')"; \
+        echo -n " define(S,\`$(+divrem-S-$(+divrem-NAME))')"; \
+        echo " /* This file is generated from divrem.m4; DO NOT EDIT! */"; \
         cat $<) | $(M4) > $@-tmp
 # Make it unwritable so noone will edit it by mistake.
        -chmod a-w $@-tmp
index 30d532ad779dfbebdb4416fe81ee4dc1e70764e1..c08c5300201f97eb0f89d6b66bc758f4c3532f61 100644 (file)
@@ -72,15 +72,15 @@ define(DEVELOP_QUOTIENT_BITS,
        ifelse($1, N,
        `       b       9f
                add     Q, ($2*2+1), Q
-       ', `    DEVELOP_QUOTIENT_BITS(incr($1), `eval(2*$2+1)')')
+', `   DEVELOP_QUOTIENT_BITS(incr($1), `eval(2*$2+1)')')
 LOC($1.eval(2**N+$2)):
        ! remainder is negative
        addcc   R,V,R
        ifelse($1, N,
        `       b       9f
                add     Q, ($2*2-1), Q
-       ', `    DEVELOP_QUOTIENT_BITS(incr($1), `eval(2*$2-1)')')
-       ifelse($1, 1, `9:')')dnl
+', `   DEVELOP_QUOTIENT_BITS(incr($1), `eval(2*$2-1)')')
+ifelse($1, 1, `9:')')dnl
 
 #include <sysdep.h>
 #include <sys/trap.h>
@@ -230,3 +230,5 @@ ifelse(S, `true',
        ifelse(OP, `div', `mov Q, %o0', `mov R, %o0')
 
 END(NAME)
+ifelse(OP, `div', ifelse(S, `false', `strong_alias (.udiv, __wrap_.udiv)
+'))dnl
index 349d7c01151ada84832a6eb278aa6525873e74ff..79e09a9ef809ad8dacb504c8999b3bd8924cf162 100644 (file)
@@ -341,7 +341,7 @@ LOC(4.9):
 
 
 
-       9:
+9:
 LOC(end_regular_divide):
        subcc   %o4, 1, %o4
        bge     LOC(divloop)
index d1d4ee31f8bc1b35a5a41690cc8371a74a43ed51..ab297188273e9002f85a3343402a85b24065933f 100644 (file)
@@ -341,7 +341,7 @@ LOC(4.9):
 
 
 
-       9:
+9:
 LOC(end_regular_divide):
        subcc   %o4, 1, %o4
        bge     LOC(divloop)
index ade0afdf40db33aac0648e5b3d0cfcfa67f4c0c8..1db67964311274c98d2bb44c309108f91e01274d 100644 (file)
@@ -328,7 +328,7 @@ LOC(4.9):
 
 
 
-       9:
+9:
 LOC(end_regular_divide):
        subcc   %o4, 1, %o4
        bge     LOC(divloop)
index d3a1a441fd4e8657c937020407fece2f9a16c45b..83fb4c242e8b3fd0f5793e166026559ffa442170 100644 (file)
@@ -328,7 +328,7 @@ LOC(4.9):
 
 
 
-       9:
+9:
 LOC(end_regular_divide):
        subcc   %o4, 1, %o4
        bge     LOC(divloop)