Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Mar 2021 15:53:37 GMT
From:      Stefan Eßer <se@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 92db69bf8762 - stable/12 - bc: Upgrade to version 3.2.4
Message-ID:  <202103211553.12LFrbmV063656@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/12 has been updated by se:

URL: https://cgit.FreeBSD.org/src/commit/?id=92db69bf876227ae9bf97874404a156bb5926334

commit 92db69bf876227ae9bf97874404a156bb5926334
Author:     Stefan Eßer <se@FreeBSD.org>
AuthorDate: 2020-12-27 20:53:09 +0000
Commit:     Stefan Eßer <se@FreeBSD.org>
CommitDate: 2021-03-21 15:53:30 +0000

    bc: Upgrade to version 3.2.4
    
    This update changes the behavior of "-e" or "-f" in BC_ENV_ARGS:
    
    Use of these options on the command line makes bc exit after executing
    the given commands. These options will not cause bc to exit when
    passed via the environment (but EOF in STDIN or -e or -f on the
    command line will make bc exit as before).
    
    The same applies to DC_ENV_ARGS with regard to the dc program.
    
    Make length(0) and length(0.0) return 1 for compatibility with GNU bc
    and the traditional FreeBSD bc.
    
    Fix a potential division by zero error in a non-standard (extended)
    math library function.
    
    (cherry picked from commit e458944cf9deec51d03ec751050a58ddf43e796f)
    (cherry picked from commit 9a995fe186257315e7b3d01e24c55d86bb18fd32)
    (cherry picked from commit 4aa71da8dc004aa5027836259433e5bff3cd9104)
    (cherry picked from commit 028616d0dd69a3da7a30cb94d35f040bf2ced6b9)
    (cherry picked from commit f165641df4da1752f8bb1f55c1e602cdb657fba4)
    (cherry picked from commit 893ecb52db5ed47d6c1e8698334d34e0df651612)
---
 contrib/bc/.gitignore                              |   9 +
 contrib/bc/.travis.yml                             |  42 ---
 contrib/bc/LICENSE.md                              |  52 ++-
 contrib/bc/Makefile.in                             | 122 ++++--
 contrib/bc/NEWS.md                                 |  97 +++++
 contrib/bc/NOTICE.md                               |   2 +-
 contrib/bc/README.md                               |  21 +-
 contrib/bc/codecov.yml                             |   3 -
 contrib/bc/configure.sh                            | 345 +++++++++++++----
 contrib/bc/exec-install.sh                         |   2 +-
 contrib/bc/functions.sh                            |  90 +++--
 contrib/bc/gen/bc_help.txt                         |   2 +-
 contrib/bc/gen/dc_help.txt                         |   2 +-
 contrib/bc/gen/lib.bc                              |   2 +-
 contrib/bc/gen/lib2.bc                             |   4 +-
 contrib/bc/gen/strgen.c                            |   4 +-
 contrib/bc/gen/strgen.sh                           |   4 +-
 contrib/bc/include/args.h                          |   4 +-
 contrib/bc/include/bc.h                            |   2 +-
 contrib/bc/include/bcl.h                           |   2 +-
 contrib/bc/include/dc.h                            |   2 +-
 contrib/bc/include/file.h                          |   2 +-
 contrib/bc/include/history.h                       |   2 +-
 contrib/bc/include/lang.h                          |   2 +-
 contrib/bc/include/lex.h                           |   2 +-
 contrib/bc/include/library.h                       |   2 +-
 contrib/bc/include/num.h                           |   4 +-
 contrib/bc/include/opt.h                           |   2 +-
 contrib/bc/include/parse.h                         |   2 +-
 contrib/bc/include/program.h                       |   2 +-
 contrib/bc/include/rand.h                          |  31 +-
 contrib/bc/include/read.h                          |   2 +-
 contrib/bc/include/status.h                        |  22 +-
 contrib/bc/include/vector.h                        |   3 +-
 contrib/bc/include/vm.h                            |  20 +-
 contrib/bc/karatsuba.py                            |  12 +-
 contrib/bc/link.sh                                 |   2 +-
 contrib/bc/locale_install.sh                       |   2 +-
 contrib/bc/locale_uninstall.sh                     |   2 +-
 contrib/bc/locales/de_DE.ISO8859-1.msg             |   2 +-
 contrib/bc/locales/de_DE.UTF-8.msg                 |   2 +-
 contrib/bc/locales/en_US.msg                       |   2 +-
 contrib/bc/locales/es_ES.ISO8859-1.msg             |   2 +-
 contrib/bc/locales/es_ES.UTF-8.msg                 |   2 +-
 contrib/bc/locales/fr_FR.ISO8859-1.msg             |   2 +-
 contrib/bc/locales/fr_FR.UTF-8.msg                 |   2 +-
 contrib/bc/locales/ja_JP.UTF-8.msg                 |   2 +-
 contrib/bc/locales/ja_JP.eucJP.msg                 |   2 +-
 contrib/bc/locales/nl_NL.ISO8859-1.msg             |   2 +-
 contrib/bc/locales/nl_NL.UTF-8.msg                 |   2 +-
 contrib/bc/locales/pl_PL.ISO8859-2.msg             |   2 +-
 contrib/bc/locales/pl_PL.UTF-8.msg                 |   2 +-
 contrib/bc/locales/pt_PT.ISO8859-1.msg             |   2 +-
 contrib/bc/locales/pt_PT.UTF-8.msg                 |   2 +-
 contrib/bc/locales/ru_RU.CP1251.msg                |   2 +-
 contrib/bc/locales/ru_RU.CP866.msg                 |   2 +-
 contrib/bc/locales/ru_RU.ISO8859-5.msg             |   2 +-
 contrib/bc/locales/ru_RU.KOI8-R.msg                |   2 +-
 contrib/bc/locales/ru_RU.UTF-8.msg                 |   2 +-
 contrib/bc/locales/zh_CN.GB18030.msg               |   2 +-
 contrib/bc/locales/zh_CN.GB2312.msg                |   2 +-
 contrib/bc/locales/zh_CN.GBK.msg                   |   2 +-
 contrib/bc/locales/zh_CN.UTF-8.msg                 |   2 +-
 contrib/bc/locales/zh_CN.eucCN.msg                 |   2 +-
 contrib/bc/manpage.sh                              |   2 +-
 contrib/bc/manuals/bc.1.md.in                      |  81 ++--
 contrib/bc/manuals/bc/A.1                          |  92 +++--
 contrib/bc/manuals/bc/A.1.md                       |  79 ++--
 contrib/bc/manuals/bc/E.1                          |  86 +++--
 contrib/bc/manuals/bc/E.1.md                       |  70 ++--
 contrib/bc/manuals/bc/EH.1                         |  86 +++--
 contrib/bc/manuals/bc/EH.1.md                      |  70 ++--
 contrib/bc/manuals/bc/EHN.1                        |  86 +++--
 contrib/bc/manuals/bc/EHN.1.md                     |  70 ++--
 contrib/bc/manuals/bc/EHNP.1                       |  86 +++--
 contrib/bc/manuals/bc/EHNP.1.md                    |  70 ++--
 contrib/bc/manuals/bc/EHP.1                        |  86 +++--
 contrib/bc/manuals/bc/EHP.1.md                     |  70 ++--
 contrib/bc/manuals/bc/EN.1                         |  86 +++--
 contrib/bc/manuals/bc/EN.1.md                      |  70 ++--
 contrib/bc/manuals/bc/ENP.1                        |  86 +++--
 contrib/bc/manuals/bc/ENP.1.md                     |  70 ++--
 contrib/bc/manuals/bc/EP.1                         |  86 +++--
 contrib/bc/manuals/bc/EP.1.md                      |  70 ++--
 contrib/bc/manuals/bc/H.1                          |  92 +++--
 contrib/bc/manuals/bc/H.1.md                       |  79 ++--
 contrib/bc/manuals/bc/HN.1                         |  92 +++--
 contrib/bc/manuals/bc/HN.1.md                      |  79 ++--
 contrib/bc/manuals/bc/HNP.1                        |  92 +++--
 contrib/bc/manuals/bc/HNP.1.md                     |  79 ++--
 contrib/bc/manuals/bc/HP.1                         |  92 +++--
 contrib/bc/manuals/bc/HP.1.md                      |  79 ++--
 contrib/bc/manuals/bc/N.1                          |  92 +++--
 contrib/bc/manuals/bc/N.1.md                       |  79 ++--
 contrib/bc/manuals/bc/NP.1                         |  92 +++--
 contrib/bc/manuals/bc/NP.1.md                      |  79 ++--
 contrib/bc/manuals/bc/P.1                          |  92 +++--
 contrib/bc/manuals/bc/P.1.md                       |  79 ++--
 contrib/bc/manuals/bcl.3                           |   4 +-
 contrib/bc/manuals/bcl.3.md                        |  78 ++--
 contrib/bc/manuals/build.md                        |  16 +
 contrib/bc/manuals/dc.1.md.in                      |  60 +--
 contrib/bc/manuals/dc/A.1                          |  78 ++--
 contrib/bc/manuals/dc/A.1.md                       |  60 +--
 contrib/bc/manuals/dc/E.1                          |  72 ++--
 contrib/bc/manuals/dc/E.1.md                       |  55 +--
 contrib/bc/manuals/dc/EH.1                         |  72 ++--
 contrib/bc/manuals/dc/EH.1.md                      |  55 +--
 contrib/bc/manuals/dc/EHN.1                        |  72 ++--
 contrib/bc/manuals/dc/EHN.1.md                     |  55 +--
 contrib/bc/manuals/dc/EHNP.1                       |  72 ++--
 contrib/bc/manuals/dc/EHNP.1.md                    |  55 +--
 contrib/bc/manuals/dc/EHP.1                        |  72 ++--
 contrib/bc/manuals/dc/EHP.1.md                     |  55 +--
 contrib/bc/manuals/dc/EN.1                         |  72 ++--
 contrib/bc/manuals/dc/EN.1.md                      |  55 +--
 contrib/bc/manuals/dc/ENP.1                        |  72 ++--
 contrib/bc/manuals/dc/ENP.1.md                     |  55 +--
 contrib/bc/manuals/dc/EP.1                         |  72 ++--
 contrib/bc/manuals/dc/EP.1.md                      |  55 +--
 contrib/bc/manuals/dc/H.1                          |  78 ++--
 contrib/bc/manuals/dc/H.1.md                       |  60 +--
 contrib/bc/manuals/dc/HN.1                         |  78 ++--
 contrib/bc/manuals/dc/HN.1.md                      |  60 +--
 contrib/bc/manuals/dc/HNP.1                        |  78 ++--
 contrib/bc/manuals/dc/HNP.1.md                     |  60 +--
 contrib/bc/manuals/dc/HP.1                         |  78 ++--
 contrib/bc/manuals/dc/HP.1.md                      |  60 +--
 contrib/bc/manuals/dc/N.1                          |  78 ++--
 contrib/bc/manuals/dc/N.1.md                       |  60 +--
 contrib/bc/manuals/dc/NP.1                         |  78 ++--
 contrib/bc/manuals/dc/NP.1.md                      |  60 +--
 contrib/bc/manuals/dc/P.1                          |  78 ++--
 contrib/bc/manuals/dc/P.1.md                       |  60 +--
 contrib/bc/manuals/header.txt                      |   2 +-
 contrib/bc/manuals/header_bc.txt                   |   2 +-
 contrib/bc/manuals/header_bcl.txt                  |   2 +-
 contrib/bc/manuals/header_dc.txt                   |   2 +-
 contrib/bc/release.sh                              |  24 +-
 contrib/bc/src/args.c                              |   6 +-
 contrib/bc/src/bc.c                                |   2 +-
 contrib/bc/src/bc_lex.c                            |   2 +-
 contrib/bc/src/bc_parse.c                          |   2 +-
 contrib/bc/src/data.c                              |   4 +-
 contrib/bc/src/dc.c                                |   2 +-
 contrib/bc/src/dc_lex.c                            |   6 +-
 contrib/bc/src/dc_parse.c                          |   2 +-
 contrib/bc/src/file.c                              |   4 +-
 contrib/bc/src/history.c                           |  15 +-
 contrib/bc/src/lang.c                              |  14 +-
 contrib/bc/src/lex.c                               |   4 +-
 contrib/bc/src/library.c                           |  12 +-
 contrib/bc/src/main.c                              |  13 +-
 contrib/bc/src/num.c                               |  12 +-
 contrib/bc/src/opt.c                               |   2 +-
 contrib/bc/src/parse.c                             |   8 +-
 contrib/bc/src/program.c                           |  35 +-
 contrib/bc/src/rand.c                              |  42 +--
 contrib/bc/src/read.c                              |   6 +-
 contrib/bc/src/vector.c                            |   8 +-
 contrib/bc/src/vm.c                                |  92 ++++-
 contrib/bc/tests/afl.py                            |  22 +-
 contrib/bc/tests/all.sh                            | 191 +---------
 contrib/bc/tests/bc/all.txt                        |   6 +-
 contrib/bc/tests/bc/length.txt                     |   3 +
 contrib/bc/tests/bc/length_results.txt             |   5 +-
 contrib/bc/tests/bc/lib2.txt                       |   6 +
 contrib/bc/tests/bc/lib2_results.txt               |   6 +
 contrib/bc/tests/bc/scripts/all.txt                |  15 +
 contrib/bc/tests/bc/scripts/bessel.bc              |   9 +-
 contrib/bc/tests/bc/timeconst.sh                   |   9 +-
 contrib/bc/tests/bcl.c                             |   2 +-
 contrib/bc/tests/dc/all.txt                        |   1 +
 contrib/bc/tests/dc/errors/30.txt                  |   1 +
 contrib/bc/tests/dc/errors/31.txt                  |   1 +
 contrib/bc/tests/dc/length.txt                     | 129 +++++++
 contrib/bc/tests/dc/length_results.txt             | 129 +++++++
 contrib/bc/tests/dc/scripts/all.txt                |   9 +
 contrib/bc/tests/diff.sh                           |  51 +++
 contrib/bc/tests/errors.sh                         |  20 +-
 contrib/bc/tests/extra_required.txt                |   7 +
 contrib/bc/tests/fuzzing/bc.dict                   |  68 ++++
 contrib/bc/tests/fuzzing/bc_inputs1/abs.txt        |   7 +
 contrib/bc/tests/fuzzing/bc_inputs1/add.txt        | 146 ++++++++
 contrib/bc/tests/fuzzing/bc_inputs1/arctangent.txt |  26 ++
 contrib/bc/tests/fuzzing/bc_inputs1/array.bc       |  60 +++
 contrib/bc/tests/fuzzing/bc_inputs1/arrays.txt     |  10 +
 .../bc/tests/fuzzing/bc_inputs1/assignments.txt    | 122 ++++++
 contrib/bc/tests/fuzzing/bc_inputs1/basic.txt      |   7 +
 contrib/bc/tests/fuzzing/bc_inputs1/boolean.txt    | 184 ++++++++++
 contrib/bc/tests/fuzzing/bc_inputs1/cosine.txt     |  44 +++
 contrib/bc/tests/fuzzing/bc_inputs1/decimal.txt    |  35 ++
 contrib/bc/tests/fuzzing/bc_inputs1/divide.txt     |  31 ++
 .../bc/tests/fuzzing/bc_inputs1/engineering.txt    |  19 +
 contrib/bc/tests/fuzzing/bc_inputs1/exponent.txt   |  22 ++
 contrib/bc/tests/fuzzing/bc_inputs1/functions.bc   |   7 +
 contrib/bc/tests/fuzzing/bc_inputs1/functions.txt  |  13 +
 contrib/bc/tests/fuzzing/bc_inputs1/globals.txt    |  21 ++
 contrib/bc/tests/fuzzing/bc_inputs1/len.bc         |  48 +++
 contrib/bc/tests/fuzzing/bc_inputs1/length.txt     |  59 +++
 contrib/bc/tests/fuzzing/bc_inputs1/lib10.txt      |   4 +
 contrib/bc/tests/fuzzing/bc_inputs1/lib11.txt      |   4 +
 contrib/bc/tests/fuzzing/bc_inputs1/lib12.txt      |   1 +
 contrib/bc/tests/fuzzing/bc_inputs1/lib2.txt       |  15 +
 contrib/bc/tests/fuzzing/bc_inputs1/lib3.txt       |   6 +
 contrib/bc/tests/fuzzing/bc_inputs1/lib4.txt       |  10 +
 contrib/bc/tests/fuzzing/bc_inputs1/lib5.txt       |   2 +
 contrib/bc/tests/fuzzing/bc_inputs1/lib6.txt       |   5 +
 contrib/bc/tests/fuzzing/bc_inputs1/lib7.txt       |  12 +
 contrib/bc/tests/fuzzing/bc_inputs1/lib8.txt       |   3 +
 contrib/bc/tests/fuzzing/bc_inputs2/lib13.txt      |   1 +
 contrib/bc/tests/fuzzing/bc_inputs2/lib14.txt      |   1 +
 contrib/bc/tests/fuzzing/bc_inputs2/lib15.txt      |   1 +
 contrib/bc/tests/fuzzing/bc_inputs2/lib16.txt      |   1 +
 contrib/bc/tests/fuzzing/bc_inputs2/lib19.txt      |   1 +
 contrib/bc/tests/fuzzing/bc_inputs2/lib20.txt      |   1 +
 contrib/bc/tests/fuzzing/bc_inputs2/lib21.txt      |   1 +
 contrib/bc/tests/fuzzing/bc_inputs2/lib22.txt      |   1 +
 contrib/bc/tests/fuzzing/bc_inputs2/lib23.txt      |   1 +
 contrib/bc/tests/fuzzing/bc_inputs2/lib24.txt      |   1 +
 contrib/bc/tests/fuzzing/bc_inputs2/log.txt        |  22 ++
 contrib/bc/tests/fuzzing/bc_inputs2/misc.txt       |  13 +
 contrib/bc/tests/fuzzing/bc_inputs2/misc1.txt      |  76 ++++
 contrib/bc/tests/fuzzing/bc_inputs2/misc2.txt      | 110 ++++++
 contrib/bc/tests/fuzzing/bc_inputs2/misc3.txt      |  12 +
 contrib/bc/tests/fuzzing/bc_inputs2/modulus.txt    |  69 ++++
 contrib/bc/tests/fuzzing/bc_inputs2/multiply.txt   |  40 ++
 contrib/bc/tests/fuzzing/bc_inputs2/pi.txt         |   4 +
 contrib/bc/tests/fuzzing/bc_inputs2/places.txt     |  19 +
 contrib/bc/tests/fuzzing/bc_inputs2/power.txt      |  44 +++
 contrib/bc/tests/fuzzing/bc_inputs2/print2.txt     | 194 ++++++++++
 contrib/bc/tests/fuzzing/bc_inputs2/references.bc  | 408 +++++++++++++++++++++
 contrib/bc/tests/fuzzing/bc_inputs2/scale.txt      |  57 +++
 contrib/bc/tests/fuzzing/bc_inputs2/scientific.txt |  51 +++
 contrib/bc/tests/fuzzing/bc_inputs2/shift.txt      | 281 ++++++++++++++
 contrib/bc/tests/fuzzing/bc_inputs2/sine.txt       | 207 +++++++++++
 contrib/bc/tests/fuzzing/bc_inputs3/01.txt         | 339 +++++++++++++++++
 contrib/bc/tests/fuzzing/bc_inputs3/02.txt         |   1 +
 contrib/bc/tests/fuzzing/bc_inputs3/03.txt         |   2 +
 contrib/bc/tests/fuzzing/bc_inputs3/04.txt         |   1 +
 contrib/bc/tests/fuzzing/bc_inputs3/05.txt         |   1 +
 contrib/bc/tests/fuzzing/bc_inputs3/06.txt         |   1 +
 contrib/bc/tests/fuzzing/bc_inputs3/07.txt         |   8 +
 contrib/bc/tests/fuzzing/bc_inputs3/08.txt         |   3 +
 contrib/bc/tests/fuzzing/bc_inputs3/09.txt         |  11 +
 contrib/bc/tests/fuzzing/bc_inputs3/10.txt         |   1 +
 contrib/bc/tests/fuzzing/bc_inputs3/11.txt         |  99 +++++
 contrib/bc/tests/fuzzing/bc_inputs3/12.txt         |   2 +
 contrib/bc/tests/fuzzing/bc_inputs3/13.txt         |  56 +++
 contrib/bc/tests/fuzzing/bc_inputs3/14.txt         |   1 +
 contrib/bc/tests/fuzzing/bc_inputs3/15.txt         |   3 +
 contrib/bc/tests/fuzzing/bc_inputs3/16.txt         |   1 +
 contrib/bc/tests/fuzzing/bc_inputs3/17.txt         |  11 +
 contrib/bc/tests/fuzzing/bc_inputs3/18.txt         |   3 +
 contrib/bc/tests/fuzzing/bc_inputs3/19.txt         |   5 +
 contrib/bc/tests/fuzzing/bc_inputs3/20.txt         |  51 +++
 contrib/bc/tests/fuzzing/bc_inputs3/21.txt         |  10 +
 contrib/bc/tests/fuzzing/bc_inputs3/22.txt         |   2 +
 contrib/bc/tests/fuzzing/bc_inputs3/23.txt         | Bin 0 -> 1024 bytes
 contrib/bc/tests/fuzzing/bc_inputs3/24.txt         |   4 +
 contrib/bc/tests/fuzzing/bc_inputs3/sqrt.txt       |  14 +
 contrib/bc/tests/fuzzing/bc_inputs3/strings.txt    |  12 +
 contrib/bc/tests/fuzzing/bc_inputs3/subtract.txt   | 153 ++++++++
 contrib/bc/tests/fuzzing/bc_inputs3/trunc.txt      |  15 +
 contrib/bc/tests/fuzzing/bc_inputs3/void.txt       |  20 +
 contrib/bc/tests/fuzzing/dc_inputs/01.txt          |   2 +
 contrib/bc/tests/fuzzing/dc_inputs/02.txt          |   5 +
 contrib/bc/tests/fuzzing/dc_inputs/03.txt          |   2 +
 contrib/bc/tests/fuzzing/dc_inputs/04.txt          |   9 +
 contrib/bc/tests/fuzzing/dc_inputs/05.txt          |   3 +
 contrib/bc/tests/fuzzing/dc_inputs/06.txt          |   1 +
 contrib/bc/tests/fuzzing/dc_inputs/07.txt          |   3 +
 contrib/bc/tests/fuzzing/dc_inputs/08.txt          |   1 +
 contrib/bc/tests/fuzzing/dc_inputs/09.txt          |   9 +
 contrib/bc/tests/fuzzing/dc_inputs/10.txt          |  11 +
 contrib/bc/tests/fuzzing/dc_inputs/11.txt          |   4 +
 contrib/bc/tests/fuzzing/dc_inputs/12.txt          |   2 +
 contrib/bc/tests/fuzzing/dc_inputs/13.txt          |   7 +
 contrib/bc/tests/fuzzing/dc_inputs/14.txt          |   7 +
 contrib/bc/tests/fuzzing/dc_inputs/15.txt          |  11 +
 contrib/bc/tests/fuzzing/dc_inputs/16.txt          |   1 +
 contrib/bc/tests/fuzzing/dc_inputs/17.txt          |  20 +
 contrib/bc/tests/fuzzing/dc_inputs/18.txt          |   3 +
 contrib/bc/tests/fuzzing/dc_inputs/19.txt          |   1 +
 contrib/bc/tests/fuzzing/dc_inputs/20.txt          |   3 +
 contrib/bc/tests/fuzzing/dc_inputs/21.txt          |   5 +
 contrib/bc/tests/fuzzing/dc_inputs/22.txt          |  36 ++
 contrib/bc/tests/fuzzing/dc_inputs/23.txt          |   2 +
 contrib/bc/tests/fuzzing/dc_inputs/24.txt          |   1 +
 contrib/bc/tests/fuzzing/dc_inputs/25.txt          |   6 +
 contrib/bc/tests/fuzzing/dc_inputs/26.txt          | 155 ++++++++
 contrib/bc/tests/fuzzing/dc_inputs/27.txt          |   2 +
 contrib/bc/tests/fuzzing/dc_inputs/28.txt          |   1 +
 contrib/bc/tests/fuzzing/dc_inputs/29.txt          |  13 +
 contrib/bc/tests/fuzzing/dc_inputs/30.txt          |   1 +
 contrib/bc/tests/fuzzing/dc_inputs/31.txt          |   1 +
 contrib/bc/tests/fuzzing/dc_inputs/abs.txt         |   7 +
 contrib/bc/tests/fuzzing/dc_inputs/add.txt         |  33 ++
 contrib/bc/tests/fuzzing/dc_inputs/array.dc        |   2 +
 contrib/bc/tests/fuzzing/dc_inputs/boolean.txt     |  80 ++++
 contrib/bc/tests/fuzzing/dc_inputs/decimal.txt     |  36 ++
 contrib/bc/tests/fuzzing/dc_inputs/divide.txt      |  33 ++
 contrib/bc/tests/fuzzing/dc_inputs/divmod.txt      |  64 ++++
 contrib/bc/tests/fuzzing/dc_inputs/else.dc         |   4 +
 contrib/bc/tests/fuzzing/dc_inputs/engineering.txt |  19 +
 contrib/bc/tests/fuzzing/dc_inputs/loop.dc         |   3 +
 contrib/bc/tests/fuzzing/dc_inputs/misc.txt        |   1 +
 contrib/bc/tests/fuzzing/dc_inputs/modexp.txt      | 103 ++++++
 contrib/bc/tests/fuzzing/dc_inputs/modulus.txt     |  70 ++++
 contrib/bc/tests/fuzzing/dc_inputs/multiply.txt    |  42 +++
 contrib/bc/tests/fuzzing/dc_inputs/places.txt      |  14 +
 contrib/bc/tests/fuzzing/dc_inputs/power.txt       |  36 ++
 contrib/bc/tests/fuzzing/dc_inputs/quit.dc         |   2 +
 contrib/bc/tests/fuzzing/dc_inputs/scientific.txt  |  51 +++
 contrib/bc/tests/fuzzing/dc_inputs/shift.txt       |  42 +++
 contrib/bc/tests/fuzzing/dc_inputs/sqrt.txt        |  14 +
 contrib/bc/tests/fuzzing/dc_inputs/stdin.txt       | 205 +++++++++++
 contrib/bc/tests/fuzzing/dc_inputs/stream.dc       |   2 +
 contrib/bc/tests/fuzzing/dc_inputs/strings.txt     |  50 +++
 contrib/bc/tests/fuzzing/dc_inputs/subtract.txt    |  33 ++
 contrib/bc/tests/fuzzing/dc_inputs/trunc.txt       |  11 +
 contrib/bc/tests/fuzzing/dc_inputs/vars.txt        |   2 +
 contrib/bc/tests/fuzzing/dc_inputs/weird.dc        |   2 +
 contrib/bc/tests/other.sh                          | 271 ++++++++++++++
 contrib/bc/tests/radamsa.sh                        |   2 +-
 contrib/bc/tests/randmath.py                       |   2 +-
 contrib/bc/tests/read.sh                           |  23 +-
 contrib/bc/tests/script.sh                         |  28 +-
 contrib/bc/tests/scripts.sh                        |   9 +-
 contrib/bc/tests/stdin.sh                          |  23 +-
 contrib/bc/tests/test.sh                           |  32 +-
 331 files changed, 9268 insertions(+), 2752 deletions(-)

diff --git a/contrib/bc/.gitignore b/contrib/bc/.gitignore
index fb9bc5ab6aa2..5c2bbae866c0 100644
--- a/contrib/bc/.gitignore
+++ b/contrib/bc/.gitignore
@@ -34,6 +34,13 @@ config.mak
 timeconst.bc
 Makefile
 
+tests/fuzzing/bc_outputs1/*
+tests/fuzzing/bc_outputs2/*
+tests/fuzzing/bc_outputs3/*
+tests/fuzzing/dc_outputs/*
+tests/bc_outputs/*
+tests/dc_outputs/*
+
 .gdb_history
 
 # Ignore the generated test files
@@ -57,5 +64,7 @@ perf.data.old
 *.html
 *.profraw
 
+core.*
+
 cscope*.out
 tags
diff --git a/contrib/bc/.travis.yml b/contrib/bc/.travis.yml
deleted file mode 100644
index 91694a821284..000000000000
--- a/contrib/bc/.travis.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-dist: bionic
-
-language: c
-
-arch:
-  - amd64
-  - arm64
-  - ppc64le
-
-compiler:
-  - gcc
-
-env:
-  global:
-    - CODECOV_TOKEN="040ce7eb-5bc7-4040-8324-364f3ef4baa3"
-    - CFLAGS="-coverage -DBC_RAND_BUILTIN=0"
-  matrix:
-    - CONFIGURE_ARGS=-fHNPOg GEN_HOST=1 LONG_BIT=64
-    - CONFIGURE_ARGS=-bfHNPOg GEN_HOST=1 LONG_BIT=64
-    - CONFIGURE_ARGS=-dfHNPOg GEN_HOST=1 LONG_BIT=64
-    - CONFIGURE_ARGS=-fEHNPOg GEN_HOST=1 LONG_BIT=64
-    - CONFIGURE_ARGS=-bfEHNPOg GEN_HOST=1 LONG_BIT=64
-    - CONFIGURE_ARGS=-dfEHNPOg GEN_HOST=1 LONG_BIT=64
-    - CONFIGURE_ARGS=-fHNPOg GEN_HOST=1 LONG_BIT=32
-    - CONFIGURE_ARGS=-bfHNPOg GEN_HOST=1 LONG_BIT=32
-    - CONFIGURE_ARGS=-dfHNPOg GEN_HOST=1 LONG_BIT=32
-    - CONFIGURE_ARGS=-fEHNPOg GEN_HOST=1 LONG_BIT=32
-    - CONFIGURE_ARGS=-bfEHNPOg GEN_HOST=1 LONG_BIT=32
-    - CONFIGURE_ARGS=-dfEHNPOg GEN_HOST=1 LONG_BIT=32
-
-before_install:
-  - sudo apt-get install -y dc
-  - pip install --user codecov
-
-before_script:
-  - curl -o tests/bc/scripts/timeconst.bc https://raw.githubusercontent.com/torvalds/linux/master/kernel/time/timeconst.bc
-
-after_success:
-  - bash <(curl -s https://codecov.io/bash)
-
-script:
-  - if [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then ./configure.sh "$CONFIGURE_ARGS" && make -j4 && make -j4 test ; fi
diff --git a/contrib/bc/LICENSE.md b/contrib/bc/LICENSE.md
index 1681a053e0de..269e131cc81d 100644
--- a/contrib/bc/LICENSE.md
+++ b/contrib/bc/LICENSE.md
@@ -1,6 +1,6 @@
 # License
 
-Copyright (c) 2018-2020 Gavin D. Howard <yzena.tech@gmail.com>
+Copyright (c) 2018-2021 Gavin D. Howard <yzena.tech@gmail.com>
 
 Redistribution and use in source and binary forms, with or without modification,
 are permitted provided that the following conditions are met:
@@ -31,7 +31,7 @@ copyrights and license:
 Copyright (c) 2010-2014, Salvatore Sanfilippo <antirez at gmail dot com><br>
 Copyright (c) 2010-2013, Pieter Noordhuis <pcnoordhuis at gmail dot com><br>
 Copyright (c) 2018 rain-1 <rain1@openmailbox.org><br>
-Copyright (c) 2018-2020, Gavin D. Howard <yzena.tech@gmail.com>
+Copyright (c) 2018-2021, Gavin D. Howard <yzena.tech@gmail.com>
 
 Redistribution and use in source and binary forms, with or without modification,
 are permitted provided that the following conditions are met:
@@ -53,3 +53,51 @@ 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.
+
+## Rand
+
+The files `src/rand.c` and `include/rand.h` are under the following copyrights
+and license:
+
+Copyright (c) 2014-2017 Melissa O'Neill and PCG Project contributors
+Copyright (c) 2018-2021 Gavin D. Howard <yzena.tech@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+## `safe-install.sh`
+
+The file `safe-install.sh` is under the following copyright and license:
+
+Copyright (c) 2021 Rich Felker
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the “Software”), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/contrib/bc/Makefile.in b/contrib/bc/Makefile.in
index 968494e4a8a0..aab7f9b569e5 100644
--- a/contrib/bc/Makefile.in
+++ b/contrib/bc/Makefile.in
@@ -1,7 +1,7 @@
 #
 # SPDX-License-Identifier: BSD-2-Clause
 #
-# Copyright (c) 2018-2020 Gavin D. Howard and contributors.
+# Copyright (c) 2018-2021 Gavin D. Howard and contributors.
 #
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions are met:
@@ -29,7 +29,7 @@
 #
 .POSIX:
 
-VERSION = 3.2.3
+VERSION = 3.3.4
 
 SRC = %%SRC%%
 OBJ = %%OBJ%%
@@ -41,6 +41,13 @@ BC_ENABLED = %%BC_ENABLED%%
 DC_ENABLED_NAME = DC_ENABLED
 DC_ENABLED = %%DC_ENABLED%%
 
+HEADERS = include/args.h include/file.h include/lang.h include/lex.h include/num.h include/opt.h include/parse.h include/program.h include/read.h include/status.h include/vector.h include/vm.h
+BC_HEADERS = include/bc.h
+DC_HEADERS = include/dc.h
+HISTORY_HEADERS = include/history.h
+EXTRA_MATH_HEADERS = include/rand.h
+LIBRARY_HEADERS = include/bcl.h include/library.h
+
 GEN_DIR = gen
 GEN = %%GEN%%
 GEN_EXEC = $(GEN_DIR)/$(GEN)
@@ -82,6 +89,11 @@ DC = dc
 BC_EXEC = $(BIN)/$(EXEC_PREFIX)$(BC)
 DC_EXEC = $(BIN)/$(EXEC_PREFIX)$(DC)
 
+BC_TEST_OUTPUTS = tests/bc_outputs
+BC_FUZZ_OUTPUTS = tests/fuzzing/bc_outputs1 tests/fuzzing/bc_outputs2 tests/fuzzing/bc_outputs3
+DC_TEST_OUTPUTS = tests/dc_outputs
+DC_FUZZ_OUTPUTS = tests/fuzzing/dc_outputs
+
 LIB = libbcl
 LIB_NAME = $(LIB).a
 LIBBC = $(BIN)/$(LIB_NAME)
@@ -125,6 +137,9 @@ BC_ENABLE_NLS = %%NLS%%
 BC_ENABLE_PROMPT = %%PROMPT%%
 BC_LONG_BIT = %%LONG_BIT%%
 
+BC_ENABLE_AFL = %%FUZZ%%
+BC_ENABLE_MEMCHECK = %%MEMCHECK%%
+
 RM = rm
 MKDIR = mkdir
 
@@ -138,6 +153,8 @@ LOCALE_UNINSTALL = ./locale_uninstall.sh
 
 VALGRIND_ARGS = --error-exitcode=100 --leak-check=full --show-leak-kinds=all --errors-for-leak-kinds=all
 
+TEST_STARS = "***********************************************************************"
+
 BC_NUM_KARATSUBA_LEN = %%KARATSUBA_LEN%%
 
 CPPFLAGS1 = -D$(BC_ENABLED_NAME)=$(BC_ENABLED) -D$(DC_ENABLED_NAME)=$(DC_ENABLED)
@@ -147,7 +164,8 @@ CPPFLAGS4 = $(CPPFLAGS3) -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700
 CPPFLAGS5 = $(CPPFLAGS4) -DBC_NUM_KARATSUBA_LEN=$(BC_NUM_KARATSUBA_LEN)
 CPPFLAGS6 = $(CPPFLAGS5) -DBC_ENABLE_NLS=$(BC_ENABLE_NLS) -DBC_ENABLE_PROMPT=$(BC_ENABLE_PROMPT)
 CPPFLAGS7 = $(CPPFLAGS6) -D$(BC_ENABLE_EXTRA_MATH_NAME)=$(BC_ENABLE_EXTRA_MATH)
-CPPFLAGS = $(CPPFLAGS7) -DBC_ENABLE_HISTORY=$(BC_ENABLE_HISTORY) -DBC_ENABLE_LIBRARY=$(BC_ENABLE_LIBRARY)
+CPPFLAGS8 = $(CPPFLAGS7) -DBC_ENABLE_HISTORY=$(BC_ENABLE_HISTORY) -DBC_ENABLE_LIBRARY=$(BC_ENABLE_LIBRARY)
+CPPFLAGS = $(CPPFLAGS8) -DBC_ENABLE_MEMCHECK=$(BC_ENABLE_MEMCHECK) -DBC_ENABLE_AFL=$(BC_ENABLE_AFL)
 CFLAGS = $(CPPFLAGS) %%CPPFLAGS%% %%CFLAGS%%
 LDFLAGS = %%LDFLAGS%%
 
@@ -159,20 +177,15 @@ HOSTCC = %%HOSTCC%%
 BC_LIB_C_ARGS = bc_lib bc_lib_name $(BC_ENABLED_NAME) 1
 BC_LIB2_C_ARGS = bc_lib2 bc_lib2_name "$(BC_ENABLED_NAME) && $(BC_ENABLE_EXTRA_MATH_NAME)" 1
 
-OBJS = $(BC_HELP_O) $(DC_HELP_O) $(BC_LIB_O) $(BC_LIB2_O) $(OBJ)
-OBJ_TARGETS = $(DC_HELP_O) $(BC_HELP_O) $(BC_LIB_O) $(BC_LIB2_O) $(OBJ)
+OBJS = $(DC_HELP_O) $(BC_HELP_O) $(BC_LIB_O) $(BC_LIB2_O) $(OBJ)
 
-.c.o:
-	$(CC) $(CFLAGS) -o $@ -c $<
-
-all: %%ALL_PREREQ%%
+all: %%DEFAULT_TARGET%%
 
-execs: make_bin $(OBJ_TARGETS)
-	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) -o $(EXEC)
-	%%LINK%%
+%%DEFAULT_TARGET%%: %%DEFAULT_TARGET_PREREQS%%
+	%%DEFAULT_TARGET_CMD%%
 
-library: make_bin $(OBJ) $(BC_LIB_O) $(BC_LIB2_O)
-	ar -r -cu $(LIBBC) $(BC_LIB_O) $(BC_LIB2_O) $(OBJ)
+%%SECOND_TARGET%%: %%SECOND_TARGET_PREREQS%%
+	%%SECOND_TARGET_CMD%%
 
 $(GEN_EXEC):
 	%%GEN_EXEC_TARGET%%
@@ -180,18 +193,32 @@ $(GEN_EXEC):
 $(BC_LIB_C): $(GEN_EXEC) $(BC_LIB)
 	$(GEN_EMU) $(GEN_EXEC) $(BC_LIB) $(BC_LIB_C) $(BC_LIB_C_ARGS)
 
+$(BC_LIB_O): $(BC_LIB_C)
+	$(CC) $(CFLAGS) -o $@ -c $<
+
 $(BC_LIB2_C): $(GEN_EXEC) $(BC_LIB2)
 	$(GEN_EMU) $(GEN_EXEC) $(BC_LIB2) $(BC_LIB2_C) $(BC_LIB2_C_ARGS)
 
+$(BC_LIB2_O): $(BC_LIB2_C)
+	$(CC) $(CFLAGS) -o $@ -c $<
+
 $(BC_HELP_C): $(GEN_EXEC) $(BC_HELP)
 	$(GEN_EMU) $(GEN_EXEC) $(BC_HELP) $(BC_HELP_C) bc_help "" $(BC_ENABLED_NAME)
 
+$(BC_HELP_O): $(BC_HELP_C)
+	$(CC) $(CFLAGS) -o $@ -c $<
+
 $(DC_HELP_C): $(GEN_EXEC) $(DC_HELP)
 	$(GEN_EMU) $(GEN_EXEC) $(DC_HELP) $(DC_HELP_C) dc_help "" $(DC_ENABLED_NAME)
 
-make_bin:
+$(DC_HELP_O): $(DC_HELP_C)
+	$(CC) $(CFLAGS) -o $@ -c $<
+
+$(BIN):
 	$(MKDIR) -p $(BIN)
 
+headers: %%HEADERS%%
+
 help:
 	@printf 'available targets:\n'
 	@printf '\n'
@@ -222,41 +249,68 @@ help:
 	@printf '    valgrind_dc     runs the dc test suite, if dc has been built,\n'
 	@printf '                    through valgrind\n'
 
+run_all_tests:
+	%%BC_ALL_TESTS%%
+	%%TIMECONST_ALL_TESTS%%
+	%%DC_ALL_TESTS%%
+
 check: test
 
 test: %%TESTS%%
 
-test_bc:
-	%%BC_TEST%%
+test_bc: test_bc_header test_bc_tests test_bc_scripts test_bc_stdin test_bc_read test_bc_errors test_bc_other
+	@printf '\nAll bc tests passed.\n\n$(TEST_STARS)\n'
+
+test_bc_tests:%%BC_TESTS%%
+
+test_bc_scripts:%%BC_SCRIPT_TESTS%%
+
+test_bc_stdin:
+	@sh tests/stdin.sh bc %%BC_TEST_EXEC%%
+
+test_bc_read:
+	@sh tests/read.sh bc %%BC_TEST_EXEC%%
+
+test_bc_errors:
+	@sh tests/errors.sh bc %%BC_TEST_EXEC%%
+
+test_bc_other:
+	@sh tests/other.sh bc %%BC_TEST_EXEC%%
+
+test_bc_header:
+	@printf '$(TEST_STARS)\n\nRunning bc tests...\n\n'
 
-test_dc:
-	%%DC_TEST%%
+test_dc: test_dc_header test_dc_tests test_dc_scripts test_dc_stdin test_dc_read test_dc_errors test_dc_other
+	@printf '\nAll dc tests passed.\n\n$(TEST_STARS)\n'
 
-time_test: time_test_bc timeconst time_test_dc
+test_dc_tests:%%DC_TESTS%%
 
-time_test_bc:
-	%%BC_TIME_TEST%%
+test_dc_scripts:%%DC_SCRIPT_TESTS%%
 
-time_test_dc:
-	%%DC_TIME_TEST%%
+test_dc_stdin:
+	@sh tests/stdin.sh dc %%DC_TEST_EXEC%%
+
+test_dc_read:
+	@sh tests/read.sh dc %%DC_TEST_EXEC%%
+
+test_dc_errors:
+	@sh tests/errors.sh dc %%DC_TEST_EXEC%%
+
+test_dc_other:
+	@sh tests/other.sh dc %%DC_TEST_EXEC%%
+
+test_dc_header:
+	@printf '$(TEST_STARS)\n\nRunning dc tests...\n\n'
 
 timeconst:
 	%%TIMECONST%%
 
-library_test: library
+library_test: $(LIBBC)
 	$(CC) $(CFLAGS) $(BCL_TEST_C) $(LIBBC) -o $(BCL_TEST)
 
 test_library: library_test
 	$(BCL_TEST)
 
-valgrind: valgrind_bc valgrind_dc
-
-valgrind_bc:
-	%%VG_BC_TEST%%
-
-valgrind_dc:
-	%%VG_DC_TEST%%
-
 karatsuba:
 	%%KARATSUBA%%
 
@@ -296,6 +350,8 @@ clean:%%CLEAN_PREREQS%%
 	@$(RM) -f $(BC_LIB2_C) $(BC_LIB2_O)
 	@$(RM) -f $(BC_HELP_C) $(BC_HELP_O)
 	@$(RM) -f $(DC_HELP_C) $(DC_HELP_O)
+	@$(RM) -fr $(BC_TEST_OUTPUTS) $(DC_TEST_OUTPUTS)
+	@$(RM) -fr $(BC_FUZZ_OUTPUTS) $(DC_FUZZ_OUTPUTS)
 
 clean_config: clean
 	@printf 'Cleaning config...\n'
diff --git a/contrib/bc/NEWS.md b/contrib/bc/NEWS.md
index db8448d48a86..3374ab57bc41 100644
--- a/contrib/bc/NEWS.md
+++ b/contrib/bc/NEWS.md
@@ -1,5 +1,102 @@
 # News
 
+## 3.3.4
+
+This is a production release that fixes a small bug.
+
+The bug was that output was not flushed before a `read()` call, so prompts
+without a newline on the end were not flushed before the `read()` call.
+
+This is such a tiny bug that users only need to upgrade if they are affected.
+
+## 3.3.3
+
+This is a production release with one tweak and fixes for manuals.
+
+The tweak is that `length(0)` returns `1` instead of `0`. In `3.3.1`, I changed
+it so `length(0.x)`, where `x` could be any number of digits, returned the
+`scale`, but `length(0)` still returned `0` because I believe that `0` has `0`
+significant digits.
+
+After request of FreeBSD and considering the arguments of a mathematician,
+compatibility with other `bc`'s, and the expectations of users, I decided to
+make the change.
+
+The fixes for manuals fixed a bug where `--` was rendered as `-`.
+
+## 3.3.2
+
+This is a production release that fixes a divide-by-zero bug in `root()` in the
+[extended math library][16]. All previous versions with `root()` have the bug.
+
+## 3.3.1
+
+This is a production release that fixes a bug.
+
+The bug was in the reporting of number length when the value was 0.
+
+## 3.3.0
+
+This is a production release that changes one behavior and fixes documentation
+bugs.
+
+The changed behavior is the treatment of `-e` and `-f` when given through
+`BC_ENV_ARGS` or `DC_ENV_ARGS`. Now `bc` and `dc` do not exit when those options
+(or their equivalents) are given through those environment variables. However,
+`bc` and `dc` still exit when they or their equivalents are given on the
+command-line.
+
+## 3.2.7
+
+This is a production release that removes a small non-portable shell operation
+in `configure.sh`. This problem was only noticed on OpenBSD, not FreeBSD or
+Linux.
+
+Non-OpenBSD users do ***NOT*** need to upgrade, although NetBSD users may also
+need to upgrade.
+
+## 3.2.6
+
+This is a production release that fixes the build on FreeBSD.
+
+There was a syntax error in `configure.sh` that the Linux shell did not catch,
+and FreeBSD depends on the existence of `tests/all.sh`.
+
+All users that already upgraded to `3.2.5` should update to this release, with
+my apologies for the poor release of `3.2.5`. Other users should skip `3.2.5` in
+favor of this version.
+
+## 3.2.5
+
+This is a production release that fixes several bugs and adds a couple small
+things.
+
+The two most important bugs were bugs that causes `dc` to access memory
+out-of-bounds (crash in debug builds). This was found by upgrading to `afl++`
+from `afl`. Both were caused by a failure to distinguish between the same two
+cases.
+
+Another bug was the failure to put all of the licenses in the `LICENSE.md` file.
+
+Third, some warnings by `scan-build` were found and eliminated. This needed one
+big change: `bc` and `dc` now bail out as fast as possible on fatal errors
+instead of unwinding the stack.
+
+Fourth, the pseudo-random number now attempts to seed itself with `/dev/random`
+if `/dev/urandom` fails.
+
+Finally, this release has a few quality-of-life changes to the build system. The
+usage should not change at all; the only thing that changed was making sure the
+`Makefile.in` was written to rebuild properly when headers changed and to not
+rebuild when not necessary.
+
+## 3.2.4
+
+This is a production release that fixes a warning on `gcc` 6 or older, which
+does not have an attribute that is used.
+
+Users do ***NOT*** need to upgrade if they don't use `gcc` 6 or older.
+
 ## 3.2.3
 
 This is a production release that fixes a bug in `gen/strgen.sh`. I recently
diff --git a/contrib/bc/NOTICE.md b/contrib/bc/NOTICE.md
index 92117daa9a6c..56d2935ab4b3 100644
--- a/contrib/bc/NOTICE.md
+++ b/contrib/bc/NOTICE.md
@@ -1,6 +1,6 @@
 # Notice
 
-Copyright 2018-2020 Gavin D. Howard and contributors.
+Copyright 2018-2021 Gavin D. Howard and contributors.
 
 ## Contributors
 
diff --git a/contrib/bc/README.md b/contrib/bc/README.md
index cea5d877b95c..6a37a8bfb8da 100644
--- a/contrib/bc/README.md
+++ b/contrib/bc/README.md
@@ -1,7 +1,5 @@
 # `bc`
 
-[![Build Status][13]][14]
-[![codecov][15]][16]
 [![Coverity Scan Build Status][17]][18]
 
 ***WARNING: This project has moved to [https://git.yzena.com/][20] for [these
@@ -41,10 +39,10 @@ Systems that are known to work:
 * Mac OSX
 * Solaris* (as long as the Solaris version supports POSIX 2008)
 * AIX
+* HP-UX* (except for history)
 
 Please submit bug reports if this `bc` does not build out of the box on any
-system besides Windows. If Windows binaries are needed, they can be found at
-[xstatic][6].
+system besides Windows.
 
 ## Build
 
@@ -53,12 +51,6 @@ This `bc` should build unmodified on any POSIX-compliant system.
 For more complex build requirements than the ones below, see the
 [build manual][5].
 
-### Pre-built Binaries
-
-It is possible to download pre-compiled binaries for a wide list of platforms,
-including Linux- and Windows-based systems, from [xstatic][6]. This link always
-points to the latest release of `bc`.
-
 ### Default
 
 For the default build with optimization, use the following commands in the root
@@ -302,8 +294,6 @@ tarballs.
 Files:
 
 	.gitignore           The git ignore file (maintainer use only).
-	.travis.yml          The Travis CI file (maintainer use only).
-	codecov.yml          The Codecov file (maintainer use only).
 	configure            A symlink to configure.sh to make packaging easier.
 	configure.sh         The configure script.
 	functions.sh         A script with functions used by other scripts.
@@ -332,24 +322,19 @@ Folders:
 [1]: https://www.gnu.org/software/bc/
 [4]: ./LICENSE.md
 [5]: ./manuals/build.md
-[6]: https://pkg.musl.cc/bc/
 [7]: ./manuals/algorithms.md
 [8]: https://git.busybox.net/busybox/tree/miscutils/bc.c
 [9]: https://github.com/landley/toybox/blob/master/toys/pending/bc.c
 [10]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
 [11]: http://semver.org/
 [12]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/bc.html
-[13]: https://travis-ci.com/gavinhoward/bc.svg?branch=master
-[14]: https://travis-ci.com/gavinhoward/bc
-[15]: https://codecov.io/gh/gavinhoward/bc/branch/master/graph/badge.svg
-[16]: https://codecov.io/gh/gavinhoward/bc
 [17]: https://img.shields.io/coverity/scan/16609.svg
 [18]: https://scan.coverity.com/projects/gavinhoward-bc
 [19]: ./manuals/benchmarks.md
 [20]: https://git.yzena.com/gavin/bc
 [21]: https://gavinhoward.com/2020/04/i-am-moving-away-from-github/
 [22]: https://www.deepl.com/translator
-[23]: https://svnweb.freebsd.org/base/head/contrib/bc/
+[23]: https://cgit.freebsd.org/src/tree/contrib/bc
 [24]: https://bugs.freebsd.org/
 [25]: https://reviews.freebsd.org/
 [26]: ./manuals/bcl.3.md
diff --git a/contrib/bc/codecov.yml b/contrib/bc/codecov.yml
deleted file mode 100644
index 396c77d9c20a..000000000000
--- a/contrib/bc/codecov.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-ignore:
-  - "src/history/history.c"
-  - "gen/strgen.c"
diff --git a/contrib/bc/configure.sh b/contrib/bc/configure.sh
index b6caf3debba3..310c26882906 100755
--- a/contrib/bc/configure.sh
+++ b/contrib/bc/configure.sh
@@ -2,7 +2,7 @@
 #
 # SPDX-License-Identifier: BSD-2-Clause
 #
-# Copyright (c) 2018-2020 Gavin D. Howard and contributors.
+# Copyright (c) 2018-2021 Gavin D. Howard and contributors.
 #
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions are met:
@@ -33,6 +33,8 @@ script=$(basename "$script")
 
 . "$scriptdir/functions.sh"
 
+cd "$scriptdir"
+
 usage() {
 
 	if [ $# -gt 0 ]; then
@@ -48,7 +50,7 @@ usage() {
 	printf 'usage:\n'
 	printf '    %s -h\n' "$script"
 	printf '    %s --help\n' "$script"
-	printf '    %s [-a|-bD|-dB|-c] [-EfgGHlMNPT] [-O OPT_LEVEL] [-k KARATSUBA_LEN]\n' "$script"
+	printf '    %s [-a|-bD|-dB|-c] [-CEfgGHlmMNPtTvz] [-O OPT_LEVEL] [-k KARATSUBA_LEN]\n' "$script"
 	printf '    %s \\\n' "$script"
 	printf '       [--library|--bc-only --disable-dc|--dc-only --disable-bc|--coverage]\\\n'
 	printf '       [--force --debug --disable-extra-math --disable-generated-tests]    \\\n'
@@ -73,6 +75,8 @@ usage() {
 	printf '        Generate test coverage code. Requires gcov and regcovr.\n'
 	printf '        It is an error if either "-b" ("-D") or "-d" ("-B") is specified.\n'
 	printf '        Requires a compiler that use gcc-compatible coverage options\n'
+	printf '    -C, --disable-clean\n'
+	printf '        Disable the clean that configure.sh does before configure.\n'
 	printf '    -d, --dc-only\n'
*** 24088 LINES SKIPPED ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202103211553.12LFrbmV063656>