about summary refs log tree commit diff
path: root/math/README.libm-test
diff options
context:
space:
mode:
authorCarlos O'Donell <carlos@redhat.com>2013-04-06 16:22:47 -0400
committerCarlos O'Donell <carlos@redhat.com>2013-04-06 16:22:47 -0400
commit26510bdda1ab999041292737d1fad6aa25f9e06d (patch)
tree71297531eeb946e15b07748b7ad4fab6de816228 /math/README.libm-test
parenta01f19c8fb12eef419d4112879bc715e2ab6f6d7 (diff)
downloadglibc-26510bdda1ab999041292737d1fad6aa25f9e06d.tar.gz
glibc-26510bdda1ab999041292737d1fad6aa25f9e06d.tar.xz
glibc-26510bdda1ab999041292737d1fad6aa25f9e06d.zip
New Makefile target `regen-ulps'.
The wiki "Regeneration" page has this to say about update ULPs.

"The libm-test-ulps files are semiautomatically updated. To
update an ulps baseline, run each of the failing tests (test-float,
 test-double, etc.) with -u; this will generate a file called ULPs;
concatenate each of those files with the existing libm-test-ulps
file, after removing any entries for particularly huge numbers of
ulps that you do not want to mark as expected. Then run
gen-libm-test.pl -n -u FILE where FILE is the concatenated file
produced in the previous step. This generates a file called
NewUlps which is the new sorted version of libm-test-ulps."

The same information is listed in math/README.libm-test, and is a
lot of manual work that you often want to run over-and-over again
while working on a particular test.

The `regen-ulps' convenience target does this automatically for
developers.

We strictly assume the source tree is readonly and add a
new --output-dir option to libm-test.inc to allow for writing
out ULPs to $(objpfx).

When run the new target does the following:
* Starts with the baseline ULPs file.
* Runs each of the libm math tests with -u.
* Adds new changes seen with -u to the baseline.
* Sorts and prepares the test output with gen-libm-test.pl.
* Leaves math/NewUlps in your build tree to copy to your source
  tree, cleanup, and checkin.

The math test documentation in math/README.libm-test is updated
document the new Makefile target.

---

2013-04-06  Carlos O'Donell  <carlos@redhat.com>

	* Makefile.in (regen-ulps): New target.
	* math/Makefile [ifneq (no,$(PERL)]: Declare regen-ulps with .PHONY.
	[ifneq (no,$(PERL)] (run-regen-ulps): New variable.
	[ifneq (no,$(PERL)] (regen-ulps): New target.
	[ifeq (no,$(PERL)] (regen-ulps): New target.
	* math/libm-test.inc (ulps_file_name): Define.
	(output_dir): New variable.
	(options): Add "output-dir" option.
	(parse_opt): Handle 'o' case.
	(main): If output_dir is non-NULL use it as a prefix
	otherwise use "".
	* math/README.libm-test: Update `How can I generate "libm-test-ulps"?'
Diffstat (limited to 'math/README.libm-test')
-rw-r--r--math/README.libm-test41
1 files changed, 25 insertions, 16 deletions
diff --git a/math/README.libm-test b/math/README.libm-test
index 7a461551cb..29294993fe 100644
--- a/math/README.libm-test
+++ b/math/README.libm-test
@@ -39,24 +39,33 @@ platform specific sysdep directory.
 How can I generate "libm-test-ulps"?
 ====================================
 
-The test drivers have an option "-u" to output an unsorted list of all
-epsilons that the functions have.  The output can be read in directly
-but it's better to pretty print it first.  "gen-libm-test.pl"  has an option
-to generate a pretty-printed and sorted new ULPs file from the output
-of the test drivers.
-
-To generate a new "libm-test-ulps" file, first remove "ULPs" file in the
-current directory, then you can execute for example:
-test-double -u --ignore-max-ulp=yes
+To automatically generate a new "libm-test-ulps" run "make regen-ulps".
+This generates the file "math/NewUlps" in the build directory.  The file
+contains the sorted results of all the tests.  You can use the "NewUlps"
+file as the machine's updated "libm-test-ulps" file.  Copy "NewUlps" to
+"libm-test-ulps" in the appropriate machine sysdep directory.  Verify
+the changes, post your patch, and check it in after review.
+
+To manually generate a new "libm-test-ulps" file, first remove "ULPs"
+file in the current directory, then you can execute for example:
+  /build/elf/ld.so --library--path /build/:/build/elf:/build/math \
+    test-double -u --ignore-max-ulp=yes
 This generates a file "ULPs" with all double ULPs in it, ignoring any
-previous calculated ULPs.
-Now generate the ULPs for all other formats, the tests will be appending
-the data to the "ULPs" file.  As final step run "gen-libm-test.pl" with the
-file as input and ask to generate a pretty printed output in the file "NewUlps":
+previously calculated ULPs, and running with the newly built dynamic
+loader and math library (assumes you didn't install your build).  Now
+generate the ULPs for all other formats, the tests will be appending the
+data to the "ULPs" file.  As final step run "gen-libm-test.pl" with the
+file as input and ask to generate a pretty printed output in the file
+"NewUlps":
   gen-libm-test.pl -u ULPs -n
-
-Now you can rename "NewUlps" to "libm-test-ulps" and move it into
-sysdeps.
+Copy "NewUlps" to "libm-test-ulps" in the appropriate machine sysdep
+directory.
+
+Note that the test drivers have an option "-u" to output an unsorted
+list of all epsilons that the functions have.  The output can be read
+in directly but it's better to pretty print it first.
+"gen-libm-test.pl" has an option to generate a pretty-printed and
+sorted new ULPs file from the output of the test drivers.
 
 Contents of libm-test-ulps
 ==========================