Skip to content
Snippets Groups Projects
  1. Apr 28, 2020
  2. Mar 25, 2020
    • Anchor's avatar
      [DRTVWR-476] - fix linking · b5bb0794
      Anchor authored
      b5bb0794
    • Nat Goodspeed's avatar
      DRTVWR-494: Use std::thread::id for LLThread::currentID(). · 5e7df752
      Nat Goodspeed authored
      LLThread::currentID() used to return a U32, a distinct unsigned value
      incremented by explicitly constructing LLThread or by calling LLThread::
      registerThreadID() early in a thread launched by other means. The latter
      imposed an unobvious requirement on new code based on std::thread. Using
      std::thread::id instead delegates to the compiler/library the problem of
      distinguishing threads launched by any means.
      
      Change lots of explicit U32 declarations. Introduce LLThread::id_t typedef to
      avoid having to run around fixing uses again if we later revisit this decision.
      
      LLMutex, which stores an LLThread::id_t, wants a distinguished value meaning
      NO_THREAD, and had an enum with that name. But as std::thread::id promises
      that the default-constructed value is distinct from every valid value,
      NO_THREAD becomes unnecessary and goes away.
      
      Because LLMutex now stores LLThread::id_t instead of U32, make llmutex.h
      #include "llthread.h" instead of the other way around. This makes LLMutex an
      incomplete type within llthread.h, so move LLThread::lockData() and
      unlockData() to the .cpp file. Similarly, remove llrefcount.h's #include
      "llmutex.h" to break circularity; instead forward-declare LLMutex.
      
      It turns out that a number of source files assumed that #include "llthread.h"
      would get the definition for LLMutex. Sprinkle #include "llmutex.h" as needed.
      
      In the SAFE_SSL code in llcorehttp/httpcommon.cpp, there's an ssl_thread_id()
      callback that returns an unsigned long to the SSL library. When LLThread::
      currentID() was U32, we could simply return that. But std::thread::id is very
      deliberately opaque, and can't be reinterpret_cast to unsigned long.
      Fortunately it can be hashed because std::hash is specialized with that type.
      5e7df752
  3. Oct 15, 2019
  4. Sep 13, 2019
  5. Jul 01, 2019
  6. Jun 11, 2019
  7. Jun 10, 2019
  8. Apr 24, 2019
  9. Jan 14, 2019
  10. Sep 07, 2018
  11. Sep 05, 2018
  12. Apr 17, 2018
  13. Feb 18, 2018
  14. Feb 12, 2018
  15. Jan 26, 2018
  16. Jan 17, 2018
  17. Dec 15, 2017
  18. Dec 14, 2017
  19. Sep 27, 2017
  20. Jun 06, 2017
  21. Apr 21, 2017
  22. Apr 19, 2017
  23. Feb 27, 2017
  24. Dec 01, 2016
    • Nat Goodspeed's avatar
      DRTVWR-418: Until we figure out how to say FIXED:NO to linker, don't. · 8a461c00
      Nat Goodspeed authored
      The present CMake logic wants to pass FIXED:NO to the linker for 64-bit
      builds, which on the face of it seems like a Good Thing: it permits code to be
      relocated in memory, preventing collisions if two libraries happen to want to
      load into overlapping address ranges.
      
      However the way it's being specified is wrong and harmful. Passing /FIXED:NO
      to the compiler command line engages /FI (Forced Include!) of a nonexistent
      file XED:NO -- producing lots of baffling fatal compile errors.
      
      Thanks Callum for diagnosing this!
      8a461c00
  25. Nov 15, 2016
    • Nat Goodspeed's avatar
      DRTVWR-418: Fold windows64 into windows platform with new autobuild. · 6c7a9728
      Nat Goodspeed authored
      autobuild 1.1 now supports expanding $variables within a config file --
      support that was explicitly added to address this very problem. So now the
      windows platform in autobuild.xml uses $AUTOBUILD_ADDRSIZE,
      $AUTOBUILD_WIN_VSPLATFORM and $AUTOBUILD_WIN_CMAKE_GEN, which should handle
      most of the deltas between the windows platform and windows64.
      
      This permits removing the windows64 platform definition from autobuild.xml.
      
      The one remaining delta between the windows64 and windows platform definitions
      was -DLL_64BIT_BUILD=TRUE. But we can handle that instead by checking
      ADDRESS_SIZE. Change all existing references to WORD_SIZE to ADDRESS_SIZE
      instead, and set ADDRESS_SIZE to $AUTOBUILD_ADDRSIZE. Change the one existing
      LL_64BIT_BUILD reference to test (ADDRESS_SIZE EQUAL 64) instead.
      6c7a9728
  26. Oct 27, 2016
  27. Oct 05, 2016
  28. Sep 30, 2016
  29. Jan 20, 2016
  30. Dec 15, 2015
  31. Nov 19, 2015
  32. Nov 16, 2015
  33. Nov 10, 2015
Loading