• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stedolan / jq / 446
84%

Build:
DEFAULT BRANCH: master
Ran 12 Oct 2018 08:28PM UTC
Jobs 1
Files 252
Run time 14s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

pending completion
446

push

travis-ci

wtlangford
Bugfix: Math function checking

We had config machinery that determined which math functions are
available in libc. If a c math function was missing on the host system,
then the corresponding jq function would be removed from the source,
enabling the build to proceed anyway. The detection machinery was broken
in a subtle way, as was shown after glibc updated to 2.27, dropping the
`pow10` function. This caused compilation to fail.

The essential problem was that we detected whether a math function was
available by compiling and linking a small program evaluating that
function on constants. However, since gcc's optimization machinery has
special knowledge of some math functions (e.g. `pow10`), it can
optimize them away, even if they don't exist in the library and are not
linkable. That is, the following example compiles and links against
glibc 2.27, even though `pow10` has been removed:
```
int main () {
  printf("%f", pow10(0.5));
  return 0;
}
```

What?!
On the other hand, this program does not link:
```

int main () {
  double f;
  printf("%f", &f);
  printf("%f", pow10(f));
  return 0;
}
```

In the first program the call to `pow10` can be optimized away as a
constant expression. This requires GCC to know about `pow10` (which it
does!), but it does not require `pow10` to be in the library (and
actually linkable).

The solution is to use autoconf's machinery for detecting function
presence, instead of our own (buggy) machinery. This has the added
benefit of simplifying the code.

The bug was reported in issue #1659

5153 of 6104 relevant lines covered (84.42%)

6923210.07 hits per line

Jobs
ID Job ID Ran Files Coverage
3 446.3 (COVERAGE="--disable-valgrind --enable-gcov") 12 Oct 2018 08:28PM UTC 0
84.42
Travis Job 446.3
Source Files on build 446
Detailed source file information is not available for this build.
  • Back to Repo
  • Travis Build #446
  • 0c845aa2 on github
  • Prev Build on master (#429)
  • Next Build on master (#472)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc