From: Guy Harris Date: Wed, 5 Feb 2020 03:45:41 +0000 (-0800) Subject: Do the floating-point tests closer to what we need. X-Git-Tag: tcpdump-4.99-bp~553 X-Git-Url: https://git.tcpdump.org/tcpdump/commitdiff_plain/aa2650ec0e9f4146a4f3c4dc9c3c58d231bbfef9 Do the floating-point tests closer to what we need. It's All Very Complicated, so mirror what print-lmp.c does - just do a calculation based on a particular input value and print the result using the same format print-lmp.c does, and have tests/TESTrun see what that result is. Just do that inside tcpdump.c, so we don't need the fptype stuff. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index b946c17d..7fa6e900 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1110,7 +1110,7 @@ if(NOT C_ADDITIONAL_FLAGS STREQUAL "") set_target_properties(netdissect PROPERTIES COMPILE_FLAGS ${C_ADDITIONAL_FLAGS}) endif() -set(TCPDUMP_SOURCE_LIST_C fptype.c tcpdump.c) +set(TCPDUMP_SOURCE_LIST_C tcpdump.c) if(NOT HAVE_BPF_DUMP) set(TCPDUMP_SOURCE_LIST_C ${TCPDUMP_SOURCE_LIST_C} bpf_dump.c) diff --git a/Makefile.in b/Makefile.in index 2b3b7e3d..694fb18b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -70,7 +70,7 @@ DEPENDENCY_CFLAG = @DEPENDENCY_CFLAG@ @rm -f $@ $(CC) $(FULL_CFLAGS) -c $(srcdir)/$*.c -CSRC = fptype.c tcpdump.c +CSRC = tcpdump.c LIBNETDISSECT_SRC=\ addrtoname.c \ diff --git a/fptype.c b/fptype.c deleted file mode 100644 index 51915060..00000000 --- a/fptype.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 1982, 1986, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include "netdissect-stdinc.h" - -#include "fptype.h" - -uint32_t -float_type_check(uint32_t in) -{ - union { /* int to float conversion buffer */ - float f; - uint32_t i; - } f; - - f.i = in; - f.f = f.f*8/1000000; - return (f.i); -} diff --git a/fptype.h b/fptype.h deleted file mode 100644 index 1d9c58a7..00000000 --- a/fptype.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 1982, 1986, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -extern uint32_t float_type_check(uint32_t); diff --git a/tcpdump.c b/tcpdump.c index 40505b2c..70cbdedf 100644 --- a/tcpdump.c +++ b/tcpdump.c @@ -150,8 +150,6 @@ The Regents of the University of California. All rights reserved.\n"; #include "print.h" -#include "fptype.h" - #ifndef PATH_MAX #define PATH_MAX 1024 #endif @@ -1903,15 +1901,13 @@ main(int argc, char **argv) * may differ (e.g., it might be 32-bit, 64-bit, * or 80-bit). */ - switch (float_type_check(0x4e93312d)) { - - case 0x461a5794: - printf("FPTYPE1\n"); - break; - - default: - printf("FPTYPE2\n"); - break; + { + union { /* int to float conversion buffer */ + float f; + uint32_t i; + } f; + f.i = 0x4e93312d; + printf("%.3f\n", f.f*8/1000000); } return 0; diff --git a/tests/TESTrun b/tests/TESTrun index ea138985..79e11fa5 100755 --- a/tests/TESTrun +++ b/tests/TESTrun @@ -69,11 +69,17 @@ sub loadconfighash { #print Dumper($main::confighhash); # also run tcpdump --fp-type to get the type of floating-point - # arithmetic we're doing, setting a HAVE_{fptype} key + # arithmetic we're doing, setting a HAVE_{fptype} key based + # on the value it prints open(FPTYPE_PIPE, "./tcpdump --fp-type |") or die("piping tcpdump --fp-type failed\n"); - my $have_fptype = "HAVE_" . ; + my $fptype_val = ; close(FPTYPE_PIPE); - $have_fptype =~ s/^\s+|\s+$//g; + my $have_fptype; + if($fptype_val == "9877.895") { + $have_fptype = "HAVE_FPTYPE1"; + } else { + $have_fptype = "HAVE_FPTYPE2"; + } $main::confighhash->{$have_fptype} = 1; return $main::confighhash;