- 09 Sep, 2020 8 commits
-
-
Adam Simpkins authored
Summary: Update the `README.md` file in the fbcode_builder subdirectory to document the current getdeps.py build system rather than the older fbcode_builder scripts that required each project to keep their own python-based build files in their project directory. Reviewed By: chadaustin, wez Differential Revision: D23591356 fbshipit-source-id: 75a099a10793e68a2b59696682010c4dff47ec69
-
Sim Sun authored
Differential Revision: D23489967 (https://github.com/facebook/folly/commit/65bb1505d3f64d9248bc1f7a04abc212db518676) Original commit changeset: db11c9c5946e fbshipit-source-id: 4970fc7de479a51d4acf91b2871ff0c15712130e
-
Adam Simpkins authored
Summary: The code in `FindDoubleConversion.cmake` called `FIND_PACKAGE_HANDLE_STANDARD_ARGS()` with the wrong arguments. The first argument must match the package name: since this file is called `FindDoubleConversion` the first argument must be `DoubleConversion`. Previously this code was passing in `DOUBLE_CONVERSION`, causing it to set `DOUBLE_CONVERSION_FOUND` instead of `DoubleConversion_FOUND`. Since this module did not set `DoubleConversion_FOUND` the `find_package()` call assumed it always succeeded, even when the double-conversion library was not found. Also remove the extra status message. `FIND_PACKAGE_HANDLE_STANDARD_ARGS()` already prints out a status message as long as `find_package()` was called without the `QUIET` argument. Reviewed By: yfeldblum Differential Revision: D23588980 fbshipit-source-id: 8c088930b1b01c027403c3e425f1924f6149f72a
-
Adam Simpkins authored
Summary: Update FindGflags.cmake to work on recent CentOS and RedHat distributions. On these distributions the CMake package configuration installed by the gflags-devel RPM is slightly broken, and sets `gflags_INCLUDE_DIR` to a directory that does not exist. This happens because `/lib64` is symlinked to `/usr/lib64`, and CMake ends up searching `/lib64` before `/usr/lib64` by default when searching for packages. Therefore it finds `gflags-config.cmake` via the `/lib64` symlink. However, `gflags-config.cmake` computes the include directory relative to where its config file was found, and this relative path computation only works when using the actual `/usr/lib64` path where it was installed. When found via `/lib64` it returns a bogus `//include` path that does not exist. This updates `FindGflags.cmake` to verify if the `gflags_INCLUDE_DIR` path actually exists, and set it to a sane location instead. This also updates the code to use the `gflags-shared` target that is exported by the default gflags package configuration if it was only built as a shared library. Pull Request resolved: https://github.com/facebook/folly/pull/1409 Reviewed By: yfeldblum Differential Revision: D23588288 fbshipit-source-id: b68a717953ae0521f568d7bcfd05ca33cd6dc578
-
Chad Austin authored
Summary: FOLLY_USE_SYMBOLIZER is a poor guard for the existence of execinfo.h and backtrace(3), which is widely available on unix platforms, but not available on Android NDK. Instead, introduce FOLLY_HAVE_BACKTRACE and have CMake detect its availability. Reviewed By: yfeldblum, luciang Differential Revision: D23361495 fbshipit-source-id: 4409363f3eaa754977a93e1f006c5911d8e32020
-
Chad Austin authored
Summary: Darwin libc doesn't implement quick_exit, so use std::_Exit instead. Reviewed By: yfeldblum Differential Revision: D23592838 fbshipit-source-id: bda318216239965e14b4c97ca184a2303353ed73
-
Lee Howes authored
Summary: For consistency with get() make getTryVia r-value qualified and move the result out. This has the benefit of removing surprise copies in code that already operated on a temporary future but ended up with an l-value reference to copy from as a result of this operation. Reviewed By: yfeldblum Differential Revision: D23489967 fbshipit-source-id: db11c9c5946edd402103b3aa4140c0a1db5aae5e
-
Raul Tambre authored
Summary: VERSION_GREATER 3.18 also matches 3.18.2, which is wrong as the target argument was only added in 3.19. After noticing that folly requires an ancient CMake version I converted over from VERSION_GREATER_EQUAL and introduced the comparison error. Issue reported [here](https://github.com/facebook/folly/pull/1433#discussion_r484278801). Pull Request resolved: https://github.com/facebook/folly/pull/1439 Reviewed By: yfeldblum Differential Revision: D23564812 Pulled By: Orvid fbshipit-source-id: 19881876147ec73ad70610cf97c408740f998340
-
- 08 Sep, 2020 7 commits
-
-
Matt Ma authored
Summary: From Dwarf4 standard http://dwarfstd.org/doc/DWARF4.pdf#page=53 ```name=2.17.3 Non-Contiguous Address Ranges The applicable base address of a range list entry is determined by the closest preceding base address selection entry (see below) in the same range list. If there is no such selection entry, then the applicable base address defaults to the base address of the compilation unit (see Section 3.1.1). In the case of a compilation unit where all of the machine code is contained in a single contiguous section, no base address selection entry is needed. ``` http://dwarfstd.org/doc/DWARF4.pdf#page=58 ```name=3.1.1 Normal and Partial Compilation Unit Entries Compilation unit entries may have the following attributes: 1. Either a DW_AT_low_pc and DW_AT_high_pc pair of attributes or a DW_AT_ranges attribute whose values encode the contiguous or non-contiguous address ranges, respectively, of the machine instructions generated for the compilation unit (see Section 2.17). A DW_AT_low_pc attribute may also be specified in combination with DW_AT_ranges to specify the default base address for use in location lists (see Section 2.6.2) and range lists (see Section 2.17.3). ``` http://dwarfstd.org/doc/DWARF4.pdf#page=61 ```name=3.1.1 Normal and Partial Compilation Unit Entries The base address of a compilation unit is defined as the value of the DW_AT_low_pc attribute, if present; otherwise, it is undefined. If the base address is undefined, then any DWARF entry or structure defined in terms of the base address of that compilation unit is not valid. ``` http://dwarfstd.org/doc/DWARF4.pdf#page=52 ```name=2.17 Code Addresses and Ranges - 2.17.1 Single Address When there is a single address associated with an entity, such as a label or alternate entry point of a subprogram, the entry has a DW_AT_low_pc attribute whose value is the relocated address for the entity. While the DW_AT_entry_pc attribute might also seem appropriate for this purpose, historically the DW_AT_low_pc attribute was used before the DW_AT_entry_pc was introduced (in DWARF Version 3). There is insufficient reason to change this. ``` Reviewed By: luciang Differential Revision: D23422082 fbshipit-source-id: 4de79fa81e6c323095bb7c79faf87369998138c6
-
Giuseppe Ottaviano authored
Summary: Avoid an expensive `__vdso_getcpu` on every `get()`. Reviewed By: terrelln Differential Revision: D23469601 fbshipit-source-id: 6c7e62a136b7cd80baab6dcfb10cba13a2e472c0
-
Maged Michael authored
Summary: The function folly::get_cached_pid() saves and reuses the result of calling getpid(). At fork, the value is updated for the child process. It is thread-safe. The first call is async-signal-unsafe but subsequent calls are async-signal-safe. Reviewed By: yfeldblum, davidtgoldblatt Differential Revision: D23433702 fbshipit-source-id: a026300206c1726fc1c2c6a588828f2e6559c4e2
-
Lee Howes authored
Add getTry back into folly::Future, with blocking behaviour consistent with get() and with SemiFuture::getTry(). Summary: Formerly Future::getTry was non-blocking, and exhibited confusing behaviour of throwing on timeouts, but returning a try containing exceptions related to the workload of the future. This was inconsistent with Future::get, and thus surprising. An earlier change safely removed this broken version of the operation. Here we add it back in with consistent behaviour. Reviewed By: yfeldblum Differential Revision: D23477042 fbshipit-source-id: afda6b37c86531dab43ac31ec6d605cc6c5d670c
-
Yedidya Feldblum authored
Summary: [Folly] A few nits for `constexpr_strlen`, `constexpr_strcmp`. Reviewed By: ericniebler Differential Revision: D23547224 fbshipit-source-id: f232861f5cc4dbd5eb77c4bbe3b9766fd233e9f5
-
Robin Cheng authored
Summary: In the "Complex" test we can have nodes running at the same time. So appending to the same vector concurrency isn't safe. Protecting that with a mutex. Reviewed By: yfeldblum Differential Revision: D23545746 fbshipit-source-id: b6f6e8b7204cf63c7e8fbbd8fc5134cb66c8180a
-
Ivan Egorov authored
Summary: Variable length arrays are an extension to C++ standard that is not universally supported. Use a fixed size array instead. Differential Revision: D23563131 fbshipit-source-id: 743e65838e83286ea28d8de10cd9d4416e6e4e91
-
- 07 Sep, 2020 1 commit
-
-
Dan Melnic authored
Summary: Add the ability to specify the min number of threads without changing a gflag Reviewed By: stuclar Differential Revision: D23557854 fbshipit-source-id: d4394e979c123e7f312816b1dec2849d46b0de9a
-
- 06 Sep, 2020 2 commits
-
-
Ivan Egorov authored
Summary: This explains why the commonly used `int(*s1 - *s2)` was changed to a slightly less obvious alternative. Reviewed By: yfeldblum Differential Revision: D23537394 fbshipit-source-id: 152554bc9864cdf25c569216d21b0c04bea67e9d
-
Orvid King authored
Summary: This is used so needs to be included. MSVC 2019's STL exposes this. Reviewed By: yfeldblum Differential Revision: D23497796 fbshipit-source-id: 612e0fb91c5d5637c25d062a4b3afc0c67344012
-
- 05 Sep, 2020 1 commit
-
-
Yedidya Feldblum authored
Summary: [Folly] Fix `StaticSingletonManager::create_<true>` which is missing the `noexcept` specification. Reviewed By: Mizuchi, xavierd Differential Revision: D23552042 fbshipit-source-id: 629ad215602125a3e6322b36948df78c62fbef15
-
- 04 Sep, 2020 8 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Limit `StaticSingletonManager` check functions to `StaticSingletonManager` calls. Reviewed By: Alfus Differential Revision: D23544598 fbshipit-source-id: 081d324064025d5fc86bb20b9b685c2591f01642
-
Yedidya Feldblum authored
Summary: [Folly] Let `noexcept` member function template `StaticSingletonManager::create` be outline to avoid pathological inline path behavior. Reviewed By: iahs Differential Revision: D23522488 fbshipit-source-id: 5ec9ed271b814f4496812e226e0f0929f65565a2
-
Yedidya Feldblum authored
Summary: [Folly] Add missing `< 0` tests for `constexpr_strcmp` to verify that the implementation is symmetric. Reviewed By: Mizuchi Differential Revision: D23482134 fbshipit-source-id: d3cb1fe8ce4690a34a12620eb57e7a8ff57ad8a1
-
Yedidya Feldblum authored
Summary: [Folly] Make `is_same` failures easier to diagnose in `constexpr_strlen` tests. Reviewed By: Mizuchi Differential Revision: D23481769 fbshipit-source-id: a990e1b96381f976feb7b4d3efda860f38fb6fe3
-
Andrew Huang authored
Summary: These tests pass in our build system, and fail on other platforms (Ubuntu, Darwin). Specifically, they cause our folly's CI to fail, since it's run on Ubuntu. The tests fail because TLS 1.3 is being enabled for these tests. In retrospect, that *should* cause session resumption to fail, since no additional reads are being done on the socket after the handshake. I'm not quite sure yet why they pass in our build system. Reviewed By: yfeldblum Differential Revision: D23513991 fbshipit-source-id: 0a401d19300d8ca7da3f9b5f8263959eac826f8c
-
Yedidya Feldblum authored
Summary: [Folly] Some machine code check functions for `terminate` and `terminate_with`. Demonstrates the impact of adding the extra argument. Reviewed By: magedm Differential Revision: D23523207 fbshipit-source-id: c37ae61e59ca060e7e370db425cb937341bd6e09
-
Robin Cheng authored
Summary: This is pretty self-explanatory. Reviewed By: yfeldblum Differential Revision: D23514563 fbshipit-source-id: 39b5796c742bfacc830c0154bf72bbd190501e33
-
Orvid King authored
Summary: Windows needs it Reviewed By: yfeldblum Differential Revision: D23497837 fbshipit-source-id: e4fa8fadb3a7ac26e602ff5fbddaef0976d47b0d
-
- 03 Sep, 2020 13 commits
-
-
Eric Niebler authored
Summary: Avoid a needless use of the preprocessor in FixedString.h by using `kIsDebug` instead of the `NDEBUG` preprocessor macro in `checkNullTerminated`. Reviewed By: yfeldblum Differential Revision: D23411248 fbshipit-source-id: 78990ade25bcfa3956f917b2b285c096b76ecb09
-
Eric Niebler authored
Summary: It's insufficient to infer support for `constexpr` `std::strlen` by merely testing that we're using libstdc++ on a compiler other than clang. Some other compilers besides gcc can be using libstdc++ that _don't_ have `constexpr` `std::strlen`. Rather, use the compiler itself to detect support for either (a) the builtins, or (b) a `constexpr` implementation of the stdlb function, falling back to a custom `constexpr` implementation otherwise. Also, handle MSVC, which supports `__builtin_strlen` but which doesn't support either `__has_feature` or `__has_builtin`. Give `constexpr_strcmp` the same handling, but leave MSVC out of the fun because it doesn't provide `__builtin_strcmp`. Also, remove the unnecessary include of `<type_traits>`. Finally, make these functions `noexcept` for good measure. Extra info: The overload sets in the `detail` namespace in this diff are a little magical. The first overload only compiles if (a) the string literal `"a"` can be `static_cast` to `const Char*` (that is, only if `Char` is `char`), and (b) if `FOLLY_DETAIL_STR???` yields a compile-time constant (so it can be used to initialize a non-type template parameter). If both of those things are true, that overload is preferred because the last argument requires no conversion. If either of those two conditions is false, that overload has a substitution failure and is removed from consideration. Then the second overload is selected. Reviewed By: yfeldblum Differential Revision: D23407997 fbshipit-source-id: f5838c578cb62b8fd777052223222882a6575429
-
Lee Howes authored
Summary: References the folly logo from within README.md. Reviewed By: yfeldblum Differential Revision: D23490077 fbshipit-source-id: 103c0a7838f9f9982c542e5a82e8382a45d8a0b7
-
Lee Howes authored
Summary: This adds the folly logo svg to the repo to make it available at a stable location. Reviewed By: yfeldblum Differential Revision: D23503775 fbshipit-source-id: 4ba0410c6f49d1ebc5b88c21c0ba8b60f9bf96d4
-
Yedidya Feldblum authored
Summary: [Folly] Revise `is_constexpr_default_constructible_v` as a variable and as eager, and `is_constexpr_default_constructible` as a type and as deferred. Reviewed By: Mizuchi Differential Revision: D23371343 fbshipit-source-id: 192b5df78053c89acadab285b6dfb9ab52b14528
-
Nathan Bronson authored
Reviewed By: yfeldblum, Mizuchi Differential Revision: D23436113 fbshipit-source-id: 940cdca0d1d674ab4929b8f88ce48438fa0e4b25
-
Dan Melnic authored
Summary: Check result against kBlockSize Reviewed By: kevin-vigor Differential Revision: D23501893 fbshipit-source-id: b6a43474422049c93f02e0b5defd300a471bccf5
-
Ivan Murashko authored
Summary: Pull Request resolved: https://github.com/facebook/folly/pull/1438 The file `folly/experimental/io/test/IoTestTempFileUtil.h` does not have `pragma once` and can be included several times. It produces compilation errors. Reviewed By: Orvid Differential Revision: D23496733 fbshipit-source-id: 0309847f60992b21d07b2377d49539d78570fb09
-
Raul Tambre authored
Summary: CMake's find modules may have target-based generator expressions, which get propagated to us when generating the pkg-config file. CMake 3.19 introduces the TARGET argument to file(GENERATE), which allows resolving such generator expressions and will avoid future issues. A workaround proposed by adriaandegroot is added for CMake 3.18. Additionally changed list->string conversion to use list(JOIN) instead of string replacement. Fixes https://github.com/facebook/folly/issues/1414. Pull Request resolved: https://github.com/facebook/folly/pull/1433 Reviewed By: yfeldblum Differential Revision: D23433365 Pulled By: Orvid fbshipit-source-id: 6ef5f180e13b41f0c92137f53fd8c19ba6355dd6
-
Yedidya Feldblum authored
Summary: [Folly] Fix possible UB in `constexpr_strcmp` since signed arithmetic wraparound is undefined. Differential Revision: D23435902 fbshipit-source-id: f71103f58f9a1a69dbc7fa462703605d1fc78348
-
Andrii Grynenko authored
Summary: Because of https://github.com/google/sanitizers/issues/1116, any races detected during pthread_atfork deadlock the process. For forks issued from folly we can use an instrumented fork version to minimize the amount of code running via pthread_atfork. Reviewed By: yfeldblum Differential Revision: D23281093 fbshipit-source-id: fd4d3bf06b7992ff314f631ed899854a8b3f6c4b
-
Yedidya Feldblum authored
Summary: [Folly] Cut `FOLLY_CREATE_HAS_MEMBER_TYPE_TRAITS` since its margin of utility is too small given `folly::is_detected`. Reviewed By: Mizuchi Differential Revision: D23371271 fbshipit-source-id: 6db49163d54ffd4d862bb98345d0e71b4d114674
-
Robin Cheng authored
Summary: When setting halt_on_error to 0 (which is the default setting now for TSAN in fbcode because we want to catch all bugs), a deadlock does not immediately cause an issue. So we include exit(0) as part of the death test to handle that case. Reviewed By: yfeldblum Differential Revision: D23493015 fbshipit-source-id: fb4910edddab11e1cd00e402b6b7350a6dc941a7
-