- 25 Jan, 2020 2 commits
-
-
Dan Melnic authored
Summary: [Folly] Suppress `header-hygiene` warnings. (Note: this ignores all push blocking failures!) Differential Revision: D19529773 fbshipit-source-id: a4e0f49010ad17b72a55cd462a7a7c3e43b72c2a
-
Dan Melnic authored
Summary: Add support for sendmmsg GSO option Reviewed By: yfeldblum Differential Revision: D19521628 fbshipit-source-id: 5611074a5cfb626ce42ffe99d1de78b8e57238c2
-
- 24 Jan, 2020 4 commits
-
-
Gabriel Russo authored
Summary: Extra `;`, shadowed declarations and unitialised variables were causing warnings to callers. Reviewed By: stepancheg Differential Revision: D19537831 fbshipit-source-id: 259cf9974592191c84d424bbdf3bd1c68425a76c
-
Mohamed Bassem authored
Summary: Remove the shared CheckAtomic cmake module out of the shared dir and back to the projects that need it. Reviewed By: lukaspiatkowski Differential Revision: D19553656 fbshipit-source-id: 5e89b5b9448ef6d6c57ef904a652e9f9a1d5dbb3
-
Dan Melnic authored
Summary: Handle __clang__ warnings under Windows Differential Revision: D19529853 fbshipit-source-id: 936f4acaaf0f601fc09e5e7de447b9c9b4c34151
-
Jason Fried authored
Summary: release() returns ptr contained and thus we never actually call the destructor :| .reset() is what we wanted, call the destructor NOW. Reviewed By: yfeldblum Differential Revision: D19548008 fbshipit-source-id: be904a7b5fb84aae5deef408e9d8e05fcd930a4c
-
- 23 Jan, 2020 12 commits
-
-
Andrew Krieger authored
Differential Revision: D19539438 fbshipit-source-id: 88c536a72a9b54d36ead2215d935745710d1d3db
-
Paul McKenney authored
Summary: Pull Request resolved: https://github.com/facebook/folly/pull/1308 The current documentation for the various Folly::Rcu retire functions is lacking, so this commit adds comment headers. Reviewed By: magedm Differential Revision: D18631443 fbshipit-source-id: 690d3c6f0d7c3142d74c97b3388fd973ca2abaac
-
Paul McKenney authored
Summary: Pull Request resolved: https://github.com/facebook/folly/pull/1307 The current documentation for Folly::rcu_reader and Foly::rcu_reader_domain is lacking, so this commit adds comment headers. Reviewed By: ot, magedm Differential Revision: D18620267 fbshipit-source-id: 98d26aa2f54fccf85de1fc5fda99a1843739bee0
-
Mohamed Bassem authored
Update the CheckAtomic CMake module to check for __atomic_fetch_add_4 instead of __atomic_is_lock_free Summary: When building with clang, the build fails with: ``` -- Looking for __atomic_is_lock_free in atomic -- Looking for __atomic_is_lock_free in atomic - not found CMake Error at cmake/CheckAtomic.cmake:90 (message): Host compiler appears to require libatomic, but cannot find it. Call Stack (most recent call first): CMakeLists.txt:75 (include) ``` And the error is: ``` /usr/share/cmake-3.10/Modules/CheckFunctionExists.c:7:3: error: conflicting types for '__atomic_is_lock_free' CHECK_FUNCTION_EXISTS(void); ^ <command line>:1:31: note: expanded from here #define CHECK_FUNCTION_EXISTS __atomic_is_lock_free ^ /usr/share/cmake-3.10/Modules/CheckFunctionExists.c:7:3: note: '__atomic_is_lock_free' is a builtin with type 'int (unsigned long, const volatile void *)' <command line>:1:31: note: expanded from here #define CHECK_FUNCTION_EXISTS __atomic_is_lock_free ^ /usr/share/cmake-3.10/Modules/CheckFunctionExists.c:17:25: error: too few arguments to function call, expected 2, have 0 CHECK_FUNCTION_EXISTS(); ~~~~~~~~~~~~~~~~~~~~~ ^ ``` LLVM's CheckAtomic (https://fburl.com/bk14shjt) uses `__atomic_fetch_add_4` so I'm modifying the configs to use it as well to check for the existence of the library. Reviewed By: yfeldblum Differential Revision: D19497168 fbshipit-source-id: 64f77487efd16dba49055f6c4cb1cdd0fc4ae6da
-
Maged Michael authored
Summary: Rename hazptr obj batch to obj cohort, a more accurate description. Reviewed By: davidtgoldblatt Differential Revision: D19518771 fbshipit-source-id: f50a8a481f260dde4fce10fb9664d4f86c263b60
-
Nathan Bronson authored
Summary: F14MapTest's continuousCapacitySmall test implicitly assumed that folly::F14FastMap<std::size_t, std::string> uses the vector storage policy, but this is not the case if std::string is 8 bytes. Remove the assumption. Differential Revision: D19431446 fbshipit-source-id: 6e6f0cbe7f57b23b2df38c87bb36a6532ab97a14
-
Lucian Grijincu authored
Differential Revision: D19384064 Original commit changeset: a2a6397b94aa fbshipit-source-id: e8ba1e8f6b3c3d3840a912e4c094b570b23ccbcf
-
Lucian Grijincu authored
Differential Revision: D19437477 Original commit changeset: 1755a71678cb fbshipit-source-id: 7fce386def631d1cf217de528b15d37aee5e921b
-
Lucian Grijincu authored
Differential Revision: D19444082 Original commit changeset: 5a5524046090 fbshipit-source-id: ecb9b9048af9c00c951cb6e540433b5a3cecaf71
-
Lucian Grijincu authored
Differential Revision: D19438098 Original commit changeset: 12f1d5c60067 fbshipit-source-id: de234114216abf243256fa7ac8c1faf7b0b4bb0b
-
Andrew Krieger authored
Summary: The default allocator for `new` does not apparently respect the extended alignment requirement for `hasptr_rec<Atom>`. We use folly's AlignedSysAllocator for these cases, which will then pass UBSan checks for alignment. ``` xplat/folly/synchronization/HazptrDomain.h:572:20: runtime error: constructor call on misaligned address 0x60c0000004c0 for type 'hazptr_rec<atomic>', which requires 128 byte alignment 0x60c0000004c0: note: pointer points here 02 00 00 7f be be be be be be be be be be be be be be be be be be be be be be be be be be be be ^ #0 0x77949e in folly::hazptr_domain<std::atomic>::acquire_new_hprec() xplat/folly/synchronization/HazptrDomain.h:572:16 #1 0x7791cc in folly::hazptr_domain<std::atomic>::hprec_acquire() xplat/folly/synchronization/HazptrDomain.h:227:35 #2 0x766a7f in folly::hazptr_holder<std::atomic>::hazptr_holder(folly::hazptr_domain<std::atomic>&) xplat/folly/synchronization/HazptrHolder.h:71:21 #3 0x766a7f in void folly::UnboundedQueue<folly::CPUThreadPoolExecutor::CPUTask, false, false, false, 6ul, 7ul, std::atomic>::enqueueImpl<folly::CPUThreadPoolExecutor::CPUTask>(folly::CPUThreadPoolExecutor::CPUTask&&) xplat/folly/concurrency/UnboundedQueue.h:374 ``` Reviewed By: magedm Differential Revision: D19237973 fbshipit-source-id: 0edea12bb3f028d21830689d52f7e0290d187ff9
-
Andrew Krieger authored
Summary: Until C++17 types with extended alignment need special handling in eg. std::vector and also std::unique_ptr. CPUThreadPoolExecutor has a default queue that requires extended alignment, but also allows the user to provide their own blocking queue. To handle this we move the private member to a shared_ptr which supported type erased destructors, and then use allocate_shared for the default queue type with a custom allocator that will satisfy alignment constraints. ``` .../unique_ptr.h:825:34: runtime error: constructor call on misaligned address 0x613000000040 for type 'folly::UnboundedBlockingQueue<folly::CPUThreadPoolExecutor::CPUTask>', which requires 128 byte alignment 0x613000000040: note: pointer points here 02 00 00 1c be be be be be be be be be be be be be be be be be be be be be be be be be be be be ^ #0 0x75b35e in std::_MakeUniq<folly::UnboundedBlockingQueue<folly::CPUThreadPoolExecutor::CPUTask> >::__single_object std::make_unique<folly::UnboundedBlockingQueue<folly::CPUThreadPoolExecutor::CPUTask> >() .../unique_ptr.h:825:30 #1 0x75602f in folly::CPUThreadPoolExecutor::CPUThreadPoolExecutor(unsigned long, std::shared_ptr<folly::ThreadFactory>) xplat/folly/executors/CPUThreadPoolExecutor.cpp:66:18 #2 0x756c6c in folly::CPUThreadPoolExecutor::CPUThreadPoolExecutor(unsigned long) xplat/folly/executors/CPUThreadPoolExecutor.cpp:84:7 ``` Differential Revision: D19237477 fbshipit-source-id: c88b26e2ca17e168f124ba27c0989f787b1ce4fd
-
- 22 Jan, 2020 9 commits
-
-
Gabriel Russo authored
Summary: `-Wredundant-parens` complains about those. Reviewed By: luciang Differential Revision: D19347715 fbshipit-source-id: 7460ff1ee675774e8811db95d12ac02ce7e924ea
-
Gabriel Russo authored
Reviewed By: yfeldblum Differential Revision: D19331966 fbshipit-source-id: ad369c51eb1253faf293fc37457d2c8122e3d227
-
Matt Ma authored
Summary: Range lists are contained in a separate object file section called .debug_ranges. A range list is indicated by a DW_AT_ranges attribute whose value is represented as an offset from the beginning of the .debug_ranges section to the beginning of the range list. Each entry in a range list is either: - a range list entry, - a base address selection entry, or - an end of list entry. Reviewed By: luciang Differential Revision: D19438098 fbshipit-source-id: 12f1d5c60067b0674c44f35ef2731781eb93f1d5
-
Matt Ma authored
Summary: Here is an example for class inline member function declared and defined in the same file: ``` Definition: 0x00004c0a: DW_TAG_subprogram [55] * DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00177124] = "_ZNK5folly10symbolizer4test24ClassWithInlineFunctions9inlineBarERNS0_10FrameArrayILm100EEE") DW_AT_name [DW_FORM_strp] ( .debug_str[0x00089a73] = "inlineBar") DW_AT_decl_file [DW_FORM_data1] (0x1a) DW_AT_decl_line [DW_FORM_data1] (0xa5) DW_AT_declaration [DW_FORM_flag_present] (true) DW_AT_external [DW_FORM_flag_present] (true) DW_AT_accessibility [DW_FORM_data1] (0x01) … Declaration: -- no DW_AT_decl_file 0x000164c1: DW_TAG_subprogram [228] * DW_AT_specification [DW_FORM_ref4] (cu + 0x48ea => {0x00004c0a}) DW_AT_inline [DW_FORM_data1] (0x01) DW_AT_object_pointer [DW_FORM_ref4] (cu + 0x161ac => {0x000164cc}) … Inline function call 0x0001657b: DW_TAG_inlined_subroutine [140] * DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x161a1 => {0x000164c1}) DW_AT_low_pc [DW_FORM_addr] (0x000000000040fa6e) DW_AT_high_pc [DW_FORM_data4] (0x00000055) DW_AT_call_file [DW_FORM_data1] (0x1a) DW_AT_call_line [DW_FORM_data1] (0xe2) ``` Here is an example for class inline member function declared and defined in different files: ``` Definition: DW_AT_decl_file: 0x01 --> SymbolizerTestUtils.h 0x00004c3d: DW_TAG_subprogram [55] * DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x0017717f] = "_ZNK5folly10symbolizer4test22InlineFunctionsWrapper9inlineBarERNS0_10FrameArrayILm100EEE") DW_AT_name [DW_FORM_strp] ( .debug_str[0x00089a73] = "inlineBar") DW_AT_decl_file [DW_FORM_data1] (0x01) DW_AT_decl_line [DW_FORM_data1] (0x30) DW_AT_declaration [DW_FORM_flag_present] (true) DW_AT_external [DW_FORM_flag_present] (true) DW_AT_accessibility [DW_FORM_data1] (0x01) … Declaration: DW_AT_decl_file: 0xbf --> SymbolizerTestUtils-inl.h 0x00017ee8: DW_TAG_subprogram [231] * DW_AT_decl_file [DW_FORM_data1] (0xbf) DW_AT_decl_line [DW_FORM_data1] (0x21) DW_AT_specification [DW_FORM_ref4] (cu + 0x491d => {0x00004c3d}) DW_AT_inline [DW_FORM_data1] (0x01) DW_AT_object_pointer [DW_FORM_ref4] (cu + 0x17bd5 => {0x00017ef5}) … Inline function call 0x00017fa5: DW_TAG_inlined_subroutine [158] * DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x17bc8 => {0x00017ee8}) DW_AT_low_pc [DW_FORM_addr] (0x00000000004104ee) DW_AT_high_pc [DW_FORM_data4] (0x00000055) DW_AT_call_file [DW_FORM_data1] (0x1a) DW_AT_call_line [DW_FORM_data2] (0x0101) ``` Reviewed By: luciang Differential Revision: D19444082 fbshipit-source-id: 5a552404609073af04b0cc0b86b5e19d5149a1e1
-
Matt Ma authored
Summary: Linkage name (DW_AT_linkage_name) contains more information than the identifier name (DW_AT_name). Reviewed By: luciang Differential Revision: D19437477 fbshipit-source-id: 1755a71678cbe9e90ba7bc085e4c46b7784c273e
-
Matt Ma authored
Summary: Actually class inline functions exist in both .debug_info and .debug_types sections. In this diff, only the information in .debug_info is used. Step 1. Find the DW_TAG_inlined_subroutine debug info entry (DIE) based on the given address. Step 2. Find the DW_TAG_subprogram DIE based on the DW_AT_abstract_origin attr in inlined_subroutine, but this DIE is just a declaration. Step 3. Find the actual definition DW_TAG_subprogram DIE based on the DW_AT_specification attr. ``` .debug_info 0x00003657: DW_TAG_subprogram [56] * ---- step 3 DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x0002932d] = "_ZN5folly10symbolizer4test24ClassWithInlineFunctions9inlineBarERNS0_10FrameArrayILm100EEE") DW_AT_name [DW_FORM_strp] ( .debug_str[0x00014064] = "inlineBar") DW_AT_decl_file [DW_FORM_data1] (0x18) DW_AT_decl_line [DW_FORM_data1] (0xa1) DW_AT_declaration [DW_FORM_flag_present] (true) DW_AT_external [DW_FORM_flag_present] (true) DW_AT_accessibility [DW_FORM_data1] (0x01) … 0x0000cd74: DW_TAG_subprogram [203] * . ---- step 2 DW_AT_specification [DW_FORM_ref4] (cu + 0x358f => {0x00003657}) DW_AT_inline [DW_FORM_data1] (0x01) DW_AT_object_pointer [DW_FORM_ref4] (cu + 0xccb7 => {0x0000cd7f}) … 0x0000cda0: DW_TAG_subprogram [181] * DW_AT_low_pc [DW_FORM_addr] (0x00000000002a4980) DW_AT_high_pc [DW_FORM_data4] (0x00001e22) DW_AT_frame_base [DW_FORM_exprloc] (<0x1> 56 ) DW_AT_object_pointer [DW_FORM_ref4] (cu + 0xccf0 => {0x0000cdb8}) DW_AT_specification [DW_FORM_ref4] (cu + 0x312f => {0x000031f7}) … 0x0000ce02: DW_TAG_inlined_subroutine [157] * ---- step 1 DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0xccac => {0x0000cd74}) DW_AT_low_pc [DW_FORM_addr] (0x00000000002a4f66) DW_AT_high_pc [DW_FORM_data4] (0x000000c0) DW_AT_call_file [DW_FORM_data1] (0x18) DW_AT_call_line [DW_FORM_data1] (0xe6) .debug_types 0x00020fdf: DW_TAG_class_type [33] * DW_AT_calling_convention [DW_FORM_data1] (0x05) DW_AT_name [DW_FORM_strp] ( .debug_str[0x00067094] = "ClassWithInlineFunctions") DW_AT_byte_size [DW_FORM_data1] (0x08) DW_AT_decl_file [DW_FORM_data1] (0x18) DW_AT_decl_line [DW_FORM_data1] (0x9f) … 0x00020ff5: DW_TAG_subprogram [56] * DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x0002932d] = "_ZN5folly10symbolizer4test24ClassWithInlineFunctions9inlineBarERNS0_10FrameArrayILm100EEE") DW_AT_name [DW_FORM_strp] ( .debug_str[0x00014064] = "inlineBar") DW_AT_decl_file [DW_FORM_data1] (0x18) DW_AT_decl_line [DW_FORM_data1] (0xa1) DW_AT_declaration [DW_FORM_flag_present] (true) DW_AT_external [DW_FORM_flag_present] (true) DW_AT_accessibility [DW_FORM_data1] (0x01) ``` Reviewed By: luciang Differential Revision: D19384064 fbshipit-source-id: a2a6397b94aab9de58d013cf4ad19e658e180d31
-
Victor Zverovich authored
Summary: In cases where `addBenchmark` is called directly the name often resides in `std::string` which requires calling `c_str()`. Make it possible to pass `std::string` by making the function take `StringPiece` instead of `const char*`. Reviewed By: rhodo Differential Revision: D19507553 fbshipit-source-id: 49dd2bb77daefffeda3fc2153215de77b530f214
-
Mohamed Bassem authored
Summary: When building folly with clang, backtrace was marked as not found. This diff uses `find_package(Backtrace)` instead which allowed us to use the symbolizer libs. Reviewed By: simpkins Differential Revision: D19497120 fbshipit-source-id: a8f8b4ffe9a2d53a53b6c7be32ac2a832a840877
-
Joe Kirchoff authored
Summary: Use functional style cast on literal value instead of static_cast Reviewed By: yfeldblum, jdonald Differential Revision: D19459138 fbshipit-source-id: 103f644322394779fc5cd8512d7a5244d2231091
-
- 21 Jan, 2020 2 commits
-
-
Paul McKenney authored
Summary: Pull Request resolved: https://github.com/facebook/folly/pull/1306 The current documentation for Folly::synchronize_rcu and Folly::rcu_barrier is lacking, this commit adds comment headers. Reviewed By: magedm Differential Revision: D18618910 fbshipit-source-id: 39e18d52b2380234ec6f33a1ec220acc97abdd50
-
Lukas Piatkowski authored
Summary: With this change the getdeps' CargoBuilder will support depencies between cargo builds. The way how it works is documented in the code and required few assumptions about how a cargo project has to be defined in order to support this. This change also adds the "mononoke" manifest and few Cargo.toml files to the mononoke project to prove that this new feature works. Reviewed By: farnz Differential Revision: D19468912 fbshipit-source-id: f299733cbbc2ec7bca399c898ec8d710334d0fa9
-
- 20 Jan, 2020 1 commit
-
-
generatedunixname89002005287564 authored
Reviewed By: yfeldblum Differential Revision: D19391772 fbshipit-source-id: 4dffdd2d4c42591c9a8b4841fcb63d2284649350
-
- 18 Jan, 2020 3 commits
-
-
Shrikrishna Khare authored
Summary: FBOSS needs to use header files from more directories in OpenNSA, so make those available in include directory. Differential Revision: D19461874 fbshipit-source-id: 1fe3fbbc39477baecf9cd4f7c7a964be40cbbb12
-
Dan Melnic authored
Summary: Fix linter issue (Note: this ignores all push blocking failures!) Reviewed By: danobi Differential Revision: D19435633 fbshipit-source-id: 858755eda1873b20cd7dae6e24b39ce21d15608a
-
Lee Howes authored
Summary: Corrects incorrect logging function being called. Reviewed By: lewissbaker Differential Revision: D19453995 fbshipit-source-id: 5268a8ed5ef8379da84e83ec05db9e88317f3b9a
-
- 17 Jan, 2020 3 commits
-
-
Dan Melnic authored
Summary: Workaround for warning caused by clang pretending to be cl Differential Revision: D19426072 fbshipit-source-id: ba59913fe9b6c27f32db06f341429952fc4312b5
-
Shrikrishna Khare authored
Summary: This is an interim solution that unblocks failing FBOSS OSS builds. Broadcom's OpenNSA is available on github and contains large precompiled libraries. For large files (> 100Mb), github uses git-lfs. git clones to OpenNSA started failing yesterday with: Error downloading object: lib/x86-64/libopennsa.a (7f21d94): Smudge error: Error downloading lib/x86-64/libopennsa.a (7f21d941ac32ccae38adb05b3386be739bdccd502a878364d386e7a5cb172f35): batch response: This repository is over its data quota. Account responsible for LFS bandwidth should purchase more data packs to restore access. Github documents (refer: https://help.github.com/en/github/managing-large-files/about-storage-and-bandwidth-usage) “When you download a file tracked with Git LFS, the total file size is counted against the repository owner’s bandwidth limit”. It appears we are hitting that limit. Thus, github is not a good choice here. Even if we create a 'github release tarball', the tarball continues to carry lfs files and thus downloading those counts towards the quota (which is limited). Broadcom paid some amount to bump up the quota, but it is matter of time before we hit it esp given that these builds run on-diff. A better solution is to download a tarball (that contains real files, not lfs), and then allow Facebook lfs to cache it. While github does not support that, it seems bitbucket does. Thus, we forked OpenNSA from github into a bitbucket repo and this patch modifies the manifest to download a tarball from bitbucket that will be cached. Broadcom is working on a cleaner solution but this will keep our FBOSS OSS build clean in the interim. Reviewed By: wez Differential Revision: D19437386 fbshipit-source-id: b1213a186a0af57b9fd71b30e8899e80affd4cc0
-
Maged Michael authored
Summary: Add a call in folly init to folly::start_hazptr_thread_pool_executor() to make the default hazptr domain use a CPUThreadPoolExecutor by default. Reviewed By: davidtgoldblatt Differential Revision: D19107125 fbshipit-source-id: 1cebe0864de14b54349f723061c4c2b5905b105b
-
- 16 Jan, 2020 3 commits
-
-
Lewis Baker authored
Summary: This allows the caller to, for example, pass their own ManualExecutor or EventBase and have the task scheduled onto that executor and have the current thread drive that executor until it completes. Reviewed By: yfeldblum Differential Revision: D19205803 fbshipit-source-id: 6042f68decf8d7d9bb1d37977e5804b0504daa41
-
Subodh Iyengar authored
Summary: add the socket to the callback parameter Reviewed By: yangchi Differential Revision: D19192549 fbshipit-source-id: 068bdb560273ab3203a1b7eaefa5b01c4e4e9968
-
Dan Melnic authored
Summary: Add support for registered fds Reviewed By: kevin-vigor Differential Revision: D19313387 fbshipit-source-id: 19527958b3986992cdafbad2c4c4902c887a9e9f
-
- 15 Jan, 2020 1 commit
-
-
Shrikrishna Khare authored
Summary: Broadcom has formally replaced OpenNSL with newer OpenNSA: https://github.com/Broadcom-Network-Switching-Software/OpenNSA/blob/master/README.md With D16401189, FBOSS no longer depends on OpenNSL, but uses the new OpenNSA instead. Remove this manifest. Reviewed By: wez Differential Revision: D19413708 fbshipit-source-id: f3662f1101d59a5e0e59cb7238797d652564ff90
-