Mail archive
alpine-devel

[alpine-devel] Missing 64-bit support in jsoncpp-dev build

From: Andrew Bell <andrew.bell.ia_at_gmail.com>
Date: Sat, 24 Feb 2018 13:41:40 -0500

Hi,

It seems that there's a problem with the way that the jsoncpp-dev package
was built. It's missing support for 64-bit integer types on x86_64 and
perhaps other platforms.

Checking the contents of the library for 64 bit Json::Values, I see that
they're missing (no long long, unsinged long long)

$ readelf -W --dyn-sym libjsoncpp.so | c++filt | grep "Value::Value"
    89: 0000000000018a3a 42 FUNC GLOBAL DEFAULT 10
Json::Value::Value(double)
    94: 00000000000189ba 32 FUNC GLOBAL DEFAULT 10
Json::Value::Value(int)
    98: 00000000000189da 32 FUNC GLOBAL DEFAULT 10
Json::Value::Value(unsigned int)
   100: 00000000000189fa 31 FUNC GLOBAL DEFAULT 10
Json::Value::Value(long)
   102: 0000000000018a1a 31 FUNC GLOBAL DEFAULT 10
Json::Value::Value(unsigned long)
   112: 0000000000018aa6 35 FUNC GLOBAL DEFAULT 10
Json::Value::Value(Json::Value&&)
   148: 0000000000018a64 35 FUNC GLOBAL DEFAULT 10
Json::Value::Value(Json::StaticString const&)
   260: 0000000000018cb8 51 FUNC GLOBAL DEFAULT 10
Json::Value::Value(char const*, char const*)
   305: 0000000000018be6 210 FUNC GLOBAL DEFAULT 10
Json::Value::Value(char const*)
   332: 0000000000018cb8 51 FUNC GLOBAL DEFAULT 10
Json::Value::Value(char const*, char const*)
   392: 0000000000018aca 162 FUNC GLOBAL DEFAULT 10
Json::Value::Value(Json::ValueType)
   438: 000000000001ad74 627 FUNC GLOBAL DEFAULT 10
Json::Value::Value(Json::Value const&)
   452: 0000000000018be6 210 FUNC GLOBAL DEFAULT 10
Json::Value::Value(char const*)
   453: 0000000000018a64 35 FUNC GLOBAL DEFAULT 10
Json::Value::Value(Json::StaticString const&)
   503: 0000000000018aca 162 FUNC GLOBAL DEFAULT 10
Json::Value::Value(Json::ValueType)
   559: 0000000000018a88 30 FUNC GLOBAL DEFAULT 10
Json::Value::Value(bool)
   561: 0000000000018a3a 42 FUNC GLOBAL DEFAULT 10
Json::Value::Value(double)
   564: 00000000000189ba 32 FUNC GLOBAL DEFAULT 10
Json::Value::Value(int)
   567: 00000000000189da 32 FUNC GLOBAL DEFAULT 10
Json::Value::Value(unsigned int)
   572: 00000000000189fa 31 FUNC GLOBAL DEFAULT 10
Json::Value::Value(long)
   574: 0000000000018dc6 46 FUNC GLOBAL DEFAULT 10
Json::Value::Value(std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&)
   575: 0000000000018a1a 31 FUNC GLOBAL DEFAULT 10
Json::Value::Value(unsigned long)
   579: 000000000001ad74 627 FUNC GLOBAL DEFAULT 10
Json::Value::Value(Json::Value const&)
   585: 0000000000018dc6 46 FUNC GLOBAL DEFAULT 10
Json::Value::Value(std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&)
   591: 0000000000018aa6 35 FUNC GLOBAL DEFAULT 10
Json::Value::Value(Json::Value&&)
   612: 0000000000018a88 30 FUNC GLOBAL DEFAULT 10
Json::Value::Value(bool)

There's a place you can turn off 64-bit support off in config.h, but it's
commented out in the distribution and I don't know why 64-bit support
wouldn't be provided as part of the package on x86_64:

// If JSON_NO_INT64 is defined, then Json only support C++ "int" type for
// integer
// Storages, and 64 bits integer support is disabled.
// #define JSON_NO_INT64 1

So at a minimum, there's a mismatch between the provided header file and
library.

$ apk info jsoncpp-dev
jsoncpp-dev-1.8.1-r1 description:
JSON C++ library (development files)

jsoncpp-dev-1.8.1-r1 webpage:
https://github.com/open-source-parsers/jsoncpp

jsoncpp-dev-1.8.1-r1 installed size:
122880

-- 
Andrew Bell
andrew.bell.ia_at_gmail.com
---
Unsubscribe:  alpine-devel+unsubscribe_at_lists.alpinelinux.org
Help:         alpine-devel+help_at_lists.alpinelinux.org
---
Received on Sat Feb 24 2018 - 13:41:40 GMT