On Mon, Oct 18, 2021 at 5:59 PM Stephen Hemminger <step...@networkplumber.org> wrote: > Konstantin Ananyev <konstantin.anan...@intel.com> wrote: > > test_shift1_check() function fails with clang build. > > The reason for that is that clang uses 64-bit shift instruction for > > what expected to be 32-bit operation. > > To be more specific, this C code: > > r2 = (uint32_t)r2 >> r4; > > With clang produces: > > 41a4eb: 48 d3 ef shr %cl,%rdi > > In that particular case it is an allowed choice, as from one side > > left-operand value is known to fit into 32 bits, from other side > > according to 'C' standard: > > "...if the value of the right operand is negative or is greater than > > or equal to the width of the promoted left operand, the behavior is > > undefined." > > The problem is that on x86 behavior for 64-bit and 32-bit shift > > operation might differ. > > The fix avoids undefined behavior by making sure > > that right operand will not exceed width of the promoted left operand. > > > > Bugzilla ID: 811 > > Fixes: 9f8f9d91a701 ("test/bpf: introduce functional test") > > Cc: sta...@dpdk.org > > > > Reported-by: Stephen Hemminger <step...@networkplumber.org> > > Signed-off-by: Konstantin Ananyev <konstantin.anan...@intel.com> > Acked-by: Stephen Hemminger <step...@networkplumber.org>
Applied, thanks. Probably worth adding bpf_autotest in the fast-tests list. There are other missing tests in this list, for my todolist unless someone wants to look at it. -- David Marchand