[Lldb-commits] [PATCH] D107840: [lldb] [gdb-server] Implement the vFile:fstat packet

Shafik Yaghmour via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Tue Nov 9 13:47:28 PST 2021


shafik added inline comments.


================
Comment at: lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp:762
+static void fill_clamp(T &dest, U src, typename T::value_type fallback) {
+  dest = src <= std::numeric_limits<typename T::value_type>::max() ? src
+                                                                   : fallback;
----------------
mgorny wrote:
> shafik wrote:
> > I am building on a macOS and I seeing the following diagnostic for this line:
> > 
> > ```
> > warning: comparison of integers of different signs: 'int' and 'std::numeric_limits<unsigned int>::type' (aka 'unsigned int') [-Wsign-compare]
> >   dest = src <= std::numeric_limits<typename T::value_type>::max() ? src
> >          ~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > ```
> > 
> > and it is triggered by:
> > 
> > ```
> > fill_clamp(data.gdb_st_dev, file_stats.st_dev, 0);
> > ```
> > 
> > In this case it will do the right thing but allowing mixed types is problematic, usually I see clamp done with homogeneous types. 
> Could you suggest how to fix it? Some platforms have different signedness than the GDB struct type.
Since we don't have C++20 I think you would have to roll your own `cmp_less` see the [possible implementation on cppreference](https://en.cppreference.com/w/cpp/utility/intcmp).

For reference see [Safe integral comparisons proposal](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0586r2.html).

I looked and I don't see something similar in llvm anywhere but I could be missing it.



Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D107840/new/

https://reviews.llvm.org/D107840



More information about the lldb-commits mailing list