2555 Commits

Author SHA1 Message Date
Takatoshi Kondo
5ab83b10b4
Merge pull request #1114 from redboltz/update_to_601_c
Update the version to 6.0.1.
c-6.0.1
2024-04-02 13:33:35 +09:00
Takatoshi Kondo
9785991158 Update the version to 6.0.1. 2024-04-02 12:29:17 +09:00
Takatoshi Kondo
68d085aa45
Merge pull request #1108 from Zopolis4/gnuinstalldirt
Use GNUInstallDirs to set installation directories
2024-03-07 19:32:11 +09:00
Zopolis4
d1af4a3cdb
Use GNUInstallDirs to set installation directories 2024-03-07 17:57:01 +11:00
Takatoshi Kondo
5f287d1361
Merge pull request #1109 from Zopolis4/appveyedc
Fix appveyor for c_master
2024-03-07 15:53:56 +09:00
Zopolis4
76d768c5a4
Update zlib to 1.3.1 in appveyor.yml 2024-03-07 15:08:41 +11:00
Takatoshi Kondo
37744bd6a8
Merge pull request #1097 from dundargoc/cmake-version
Bump minimum cmake version to 3.5 to avoid deprecation warning
2023-11-09 19:25:10 +09:00
dundargoc
8957d6ec07 Bump minimum cmake version to 3.5 to avoid deprecation warning
Building msgpack gives currently gives the following warning:
"CMake Deprecation Warning at CMakeLists.txt:1 (CMAKE_MINIMUM_REQUIRED):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions."

Reuse same solution as fc18087cdfaadec0b905643f93950387e797da08 as the
policy CMP0060 introduced in cmake 3.3 causes problems with when linking
for 32-bit otherwise.
2023-10-23 20:51:18 +02:00
Takatoshi Kondo
3a41b24ff2
Merge pull request #1091 from redboltz/update_zlib_for_ci_c
Updated zlib for CI.
2023-08-30 00:00:35 +09:00
Takatoshi Kondo
d03a9b91f3 Updated zlib for CI. 2023-08-29 23:31:35 +09:00
Takatoshi Kondo
366f06d4ac
Merge pull request #1069 from redboltz/fix_1066
Fix #1066.
2023-05-10 13:08:09 +09:00
Takatoshi Kondo
fe4312c427 Fix #1066. 2023-05-10 12:19:20 +09:00
Takatoshi Kondo
cd67366b7f
Merge pull request #1060 from ericvw/cmake-respect-prefx-at-install
cmake: Respect --prefix for headers during cmake --install
2023-04-14 18:19:57 +09:00
Eric N. Vander Weele
80f60009f5 cmake: Respect --prefix for headers during cmake --install
Removing CMAKE_INSTALL_PREFIX allows for `cmake --install <build-dir>
--prefix=<installation-prefix>` to install headers at
`<installation-prefix>/include` at install time.

When CMAKE_INSTALL_PREFIX is present in `INSTALL()`, it is hard-coded
during configuration (e.g., `cmake -S .`), which disallows it from being
set at install time.
2023-04-12 09:22:22 -04:00
Takatoshi Kondo
4fd5056ea5
Merge pull request #1061 from ericvw/ci-linux-ubuntu-latest
ci: Use ubuntu-latest for CI on Linux
2023-04-12 12:03:25 +09:00
Eric N. Vander Weele
7fc51afd59 ci: Use ubuntu-latest for CI on Linux
Ubuntu 18.04 is deprecated on GitHub Actions. Additionally:

- Install 'clang' to get the latest clang toolchain.
    - Use -gdwarf-4 so Valgrind understands the debug information.
- Install latest version of gtest (v1.13.0).
- Show compile and link commands when building.
- `cat` Valgrind output on error.
2023-04-11 15:39:50 -04:00
Takatoshi Kondo
8160ede5e2 Update README.md. c-6.0.0 2023-03-04 22:43:04 +09:00
Takatoshi Kondo
6e8503f1c0
Merge pull request #1055 from dundargoc/build/only-c
Explicitly specify the project is a C project if tests aren't used.
2023-03-04 22:39:01 +09:00
dundargoc
2f543923d2 Explicitly specify the project is a C project.
CMake assumes the default project uses both C and C++, and therefore
will fail if both a C and a C++ compiler isn't found. This essentially
blocks pure C projects from using msgpack-c if they also don't have a
C++ compiler.

Just specifying that the project is "C" isn't possible though, as the
test themselves use C++. The workaround here is that we specify the
project needs both a C and C++ compiler if tests are used, but only a C
compiler if the tests aren't used.
2023-03-04 13:41:42 +01:00
Takatoshi Kondo
b3de6f83cb
Merge pull request #1053 from redboltz/unify_project_name_c
Unify all package related names to msgpack-c.
2023-03-04 21:35:08 +09:00
Takatoshi Kondo
01f3d24fee Unify all package related names to msgpack-c.
Update the version to 6.0.0.
2023-02-28 10:49:13 +09:00
Takatoshi Kondo
551308ae10
Merge pull request #1049 from redboltz/fix_makedist.sh
Fixed cmake config name.
c-5.0.0
2023-01-10 21:41:34 +09:00
Takatoshi Kondo
f2c446799c Fixed cmake config name. 2023-01-10 20:06:01 +09:00
Takatoshi Kondo
c2430635f9
Merge pull request #1047 from redboltz/update_to_500_c
Updated the version to 5.0.0.
2023-01-10 19:58:15 +09:00
Takatoshi Kondo
bffd3f2091 Updated the version to 5.0.0. 2023-01-10 18:50:20 +09:00
Takatoshi Kondo
076b5ed7fd
Merge pull request #1044 from traversaro/patch-1
Change CMake package name of C library to msgpackc
2023-01-10 18:32:20 +09:00
Silvio Traversaro
52fa74804c
Update CMakeLists.txt 2023-01-10 10:02:33 +01:00
Silvio Traversaro
5ae6077234
Update appveyor.yml 2023-01-07 14:40:24 +01:00
Silvio Traversaro
43de525dc7
Update zlib used in AppVeyor to 1.2.13 2023-01-07 13:35:33 +01:00
Silvio Traversaro
f7961b798b
Change CMake package name to msgpackc 2023-01-05 14:59:10 +01:00
Silvio Traversaro
5cada9eb27
Update and rename msgpack-config.cmake.in to msgpackc-config.cmake.in 2023-01-05 14:55:45 +01:00
Silvio Traversaro
ce42436f20
Change CMake package name to msgpackc 2023-01-05 14:55:10 +01:00
Takatoshi Kondo
c3df1bb26e
Merge pull request #1023 from redboltz/add_sanitizer
Added additional address sanitizer for CI.
2022-06-05 21:15:26 +09:00
Takatoshi Kondo
63d3b093f0 Updated appveyor zlib version. 2022-06-05 20:35:54 +09:00
Takatoshi Kondo
8b57d2caf9 Added additional address sanitizer for CI.
Except install, and except SHARED=OFF.
2022-06-05 20:30:14 +09:00
Takatoshi Kondo
a9a48cea3a
Merge pull request #976 from redboltz/update_to_c_4
Updated the version to 4.0.0.
c-4.0.0
2021-09-01 11:10:58 +09:00
Takatoshi Kondo
e96853a946 Updated the version to 4.0.0. 2021-09-01 10:50:27 +09:00
Takatoshi Kondo
2ebe884c0e
Merge pull request #962 from jrtc27/c-cheri
Support building for CHERI/Morello
2021-08-17 14:20:42 +09:00
Jessica Clarke
823caa8d8c Increase portability by masking rather than dividing and multiplying pointers
If (u)intptr_t exist, the only guarantee provided by the C standard is
that you can cast a pointer to one and back. No claims are made about
what that injective pointer-to-integer mapping is, nor the surjective
reverse integer-to-pointer mapping; for example, nowhere is it specified
that, given a char *p, p + 1 == (char *)((uintptr_t)p + 1), although no
sensible implementation would make that not the case (provided p is a
valid strictly in bounds pointer).

With real pointers, taking them out of bounds (other than the one
exception that is a one-past-the-end pointer) of their corresponding
allocation is UB. Whilst the semantics of arithmetic on uintptr_t is not
specified when cast back to a pointer, compilers already assume that
uintptr_t arithmetic does not go out of bounds (or, put another way,
that the result always ends up pointing to the same allocation) and
their alias analysis-based optimisations already assume this. CHERI, and
Arm's Morello, implement C language pointers with hardware capabilities,
which are unforgeable pointers with bounds and permissions. In order to
only double rather than quadruple the size of pointers, CHERI exploits
C's requirement that pointers not be taken out of bounds, and compresses
these bounds using a floating-point-like representation. The important
implication of this for most software is that if a capability, i.e. C
pointer in CHERI C, is taken too far out of bounds (where "too far" is
proportional to the size of the allocation) it can no longer be
represented and thus is invalidated, meaning it will trap on a later
dereference. This also extends to (u)intptr_t, which are also
implemented as capabilities, since if it were just a plain integer then
casting a pointer to (u)intptr_t would lose the metadata and break the
ability to cast back to a pointer.

Whilst the composition of dividing a pointer and then multiplying it
again has a somewhat sensible interpretation of rounding it down (even
though technically no such guarantees are made by the spec), the
individual operations do not, and the division is highly likely to take
the pointer far out of bounds of its allocation and, on CHERI, result in
it being unrepresentable and thus invalidated. Instead, we can perform a
more standard bitwise AND with a mask to clear the low bits, exploiting
the fact that alignments are powers of two; note that technically the
rounding up variant of this does take the pointer out of bounds slightly
and, whilst there are other ways to write such code that avoid doing so,
they are more cumbersome, and this code does not need to worry about
that.
2021-08-07 00:19:46 +01:00
Jessica Clarke
9c5654ed44 Increase portability by using uintptr_t rather than size_t for pointers
The only integral types guaranteed by the C standard, if they exist, to
support having a pointer cast to them and back are (u)intptr_t. On most
architectures, size_t and uintptr_t are typedefs for the same underlying
type, so this code ends up working. However, on CHERI, and thus Arm's
experimental Morello prototype, C language pointers are implemented with
hardware capabilities, which are unforgeable pointers with bounds and
permissions. This means that, whilst size_t remains a plain 32/64-bit
integer size, (u)intotr_t is represented with a capability. Casting to
size_t and back to a pointer causes the capability metadata to be lost
and the resulting capability to be invalid, meaning it will trap when
dereferenced. Instead, use uintptr_t, and provide fallback definitions
for old versions of MSVC like for the other C99 integer types.
2021-08-06 23:49:16 +01:00
Takatoshi Kondo
5d30e42c01
Merge pull request #953 from kovdan01/fix_name_conflicts_c
Fix name conflicts (C)
2021-05-09 12:12:18 +09:00
Daniil Kovalev
6b4a7b3b16 Fix iovec-related tests 2021-05-08 17:58:09 +03:00
Daniil Kovalev
0f1d0ed78c Fix name conflicts (C version)
Same as #952, but for C
2021-05-08 16:51:02 +03:00
Takatoshi Kondo
825017ac50
Merge pull request #949 from redboltz/fix_948
Fixed #948.
2021-04-24 15:41:02 +09:00
Takatoshi Kondo
4bc64de0ec Fixed #948.
Added msgpack_unpacked_destroy() call.
2021-04-24 15:25:37 +09:00
Takatoshi Kondo
08a42a347c
Merge pull request #944 from vmallet/ctests_verbose
C: Increase tests visibility (Issue #943)
2021-04-03 09:39:06 +09:00
Takatoshi Kondo
734e47c067
Merge pull request #942 from vmallet/fix_print_buffer_empty_str
Fix #941: empty strings break msgpack_object_print_buffer() (C)
2021-04-03 09:23:26 +09:00
Vincent Mallet
fa7bb8ec77 README: make reference to gtest 2021-03-23 17:05:54 -07:00
Vincent Mallet
dc51f5d236 Better visibility for C tests:
- turn on output-on-failure by default
 - explain how to run tests in README
2021-03-23 16:33:52 -07:00
Vincent Mallet
f06b46d412 Attempt to fix Windows build for tests.
Use sprintf_s (windows) or snprintf (others) instead of sprintf in unit tests.
2021-03-23 14:57:07 -07:00