[V2,6/8] bpf: adjust GCC testsuite to eBPF limitations
diff mbox series

Message ID 20190817005056.15749-7-jose.marchesi@oracle.com
State New
Headers show
Series
  • eBPF support for GCC
Related show

Commit Message

Jose E. Marchesi Aug. 17, 2019, 12:50 a.m. UTC
This patch makes many tests in gcc.dg and gcc.c-torture to be skipped
in bpf-*-* targets.  This is due to the many limitations imposed by
eBPF to what would be perfectly valid C code: no support for indirect
calls, no support for more than 5 arguments to function calls, no
support for indirect jumps, a very limited range for direct jumps, the
stack limit, lack of standard header files, etc.

Hopefully some of these restrictions will be relaxed in the future.
In particular, I expect the stack limit will be significantly
increased at some point.  Also, as semantics associated with object
linking get developed in eBPF, it may be possible at some point to
provide a set of standard run-time libraries for eBPF programs.

gcc/testsuite/ChangeLog:

	* gcc.dg/builtins-config.h: eBPF doesn't support C99 standard
	functions.
	* gcc.c-torture/compile/20000211-1.c: Skip if target bpf-*-*.
	* gcc.c-torture/compile/20000403-1.c: Likewise.
	* gcc.c-torture/compile/20000609-1.c: Likewise.
	* gcc.c-torture/compile/20000804-1.c: Likewise.
	* gcc.c-torture/compile/20001226-1.c: Likewise.
	* gcc.c-torture/compile/20010102-1.c: Likewise.
	* gcc.c-torture/compile/20010107-1.c: Likewise.
	* gcc.c-torture/compile/20011109-1.c: Likewise.
	* gcc.c-torture/compile/20011218-1.c: Likewise.
	* gcc.c-torture/compile/20011229-1.c: Likewise.
	* gcc.c-torture/compile/20020129-1.c: Likewise.
	* gcc.c-torture/compile/20020304-1.c: Likewise.
	* gcc.c-torture/compile/20020320-1.c: Likewise.
	* gcc.c-torture/compile/20020604-1.c: Likewise.
	* gcc.c-torture/compile/20020706-1.c: Likewise.
	* gcc.c-torture/compile/20020706-2.c: Likewise.
	* gcc.c-torture/compile/20021015-1.c: Likewise.
	* gcc.c-torture/compile/20021205-1.c: Likewise.
	* gcc.c-torture/compile/20030903-1.c: Likewise.
	* gcc.c-torture/compile/20030921-1.c: Likewise.
	* gcc.c-torture/compile/20031023-1.c: Likewise.
	* gcc.c-torture/compile/20031023-2.c: Likewise.
	* gcc.c-torture/compile/20031023-3.c: Likewise.
	* gcc.c-torture/compile/20031023-4.c: Likewise.
	* gcc.c-torture/compile/20031125-1.c: Likewise.
	* gcc.c-torture/compile/20040101-1.c: Likewise.
	* gcc.c-torture/compile/20040317-2.c: Likewise.
	* gcc.c-torture/compile/20040614-1.c: Likewise.
	* gcc.c-torture/compile/20040726-1.c: Likewise.
	* gcc.c-torture/compile/20040909-1.c: Likewise.
	* gcc.c-torture/compile/20050122-1.c: Likewise.
	* gcc.c-torture/compile/20050202-1.c: Likewise.
	* gcc.c-torture/compile/20050303-1.c: Likewise.
	* gcc.c-torture/compile/20050622-1.c: Likewise.
	* gcc.c-torture/compile/20051216-1.c: Likewise.
	* gcc.c-torture/compile/20060208-1.c: Likewise.
	* gcc.c-torture/compile/20060421-1.c: Likewise.
	* gcc.c-torture/compile/20071207-1.c: Likewise.
	* gcc.c-torture/compile/20080903-1.c: Likewise.
	* gcc.c-torture/compile/20081108-1.c: Likewise.
	* gcc.c-torture/compile/20101217-1.c: Likewise.
	* gcc.c-torture/compile/20121027-1.c: Likewise.
	* gcc.c-torture/compile/20150327.c: Likewise.
	* gcc.c-torture/compile/20151204.c: Likewise.
	* gcc.c-torture/compile/900313-1.c: Likewise.
	* gcc.c-torture/compile/920428-2.c: Likewise.
	* gcc.c-torture/compile/920501-12.c: Likewise.
	* gcc.c-torture/compile/920501-4.c: Likewise.
	* gcc.c-torture/compile/920501-7.c: Likewise.
	* gcc.c-torture/compile/920625-1.c: Likewise.
	* gcc.c-torture/compile/920723-1.c: Likewise.
	* gcc.c-torture/compile/920928-5.c: Likewise.
	* gcc.c-torture/compile/921202-1.c: Likewise.
	* gcc.c-torture/compile/930117-1.c: Likewise.
	* gcc.c-torture/compile/930421-1.c: Likewise.
	* gcc.c-torture/compile/930607-1.c: Likewise.
	* gcc.c-torture/compile/930623-1.c: Likewise.
	* gcc.c-torture/compile/931003-1.c: Likewise.
	* gcc.c-torture/compile/931004-1.c: Likewise.
	* gcc.c-torture/compile/950719-1.c: Likewise.
	* gcc.c-torture/compile/951222-1.c: Likewise.
	* gcc.c-torture/compile/961004-1.c: Likewise.
	* gcc.c-torture/compile/980504-1.c: Likewise.
	* gcc.c-torture/compile/980816-1.c: Likewise.
	* gcc.c-torture/compile/990517-1.c: Likewise.
	* gcc.c-torture/compile/990625-1.c: Likewise.
	* gcc.c-torture/compile/991213-2.c: Likewise.
	* gcc.c-torture/compile/DFcmp.c: Likewise.
	* gcc.c-torture/compile/HIcmp.c: Likewise.
	* gcc.c-torture/compile/HIset.c: Likewise.
	* gcc.c-torture/compile/QIcmp.c: Likewise.
	* gcc.c-torture/compile/QIset.c: Likewise.
	* gcc.c-torture/compile/SFset.c: Likewise.
	* gcc.c-torture/compile/SIcmp.c: Likewise.
	* gcc.c-torture/compile/SIset.c: Likewise.
	* gcc.c-torture/compile/UHIcmp.c: Likewise.
	* gcc.c-torture/compile/UQIcmp.c: Likewise.
	* gcc.c-torture/compile/USIcmp.c: Likewise.
	* gcc.c-torture/compile/bcopy.c: Likewise.
	* gcc.c-torture/compile/callind.c: Likewise.
	* gcc.c-torture/compile/calls-void.c: Likewise.
	* gcc.c-torture/compile/calls.c: Likewise.
	* gcc.c-torture/compile/consec.c: Likewise.
	* gcc.c-torture/compile/limits-fndefn.c: Likewise.
	* gcc.c-torture/compile/lll.c: Likewise.
	* gcc.c-torture/compile/parms.c: Likewise.
	* gcc.c-torture/compile/pass.c: Likewise.
	* gcc.c-torture/compile/poor.c: Likewise.
	* gcc.c-torture/compile/pp.c: Likewise.
	* gcc.c-torture/compile/pr21840.c: Likewise.
	* gcc.c-torture/compile/pr23929.c: Likewise.
	* gcc.c-torture/compile/pr25310.c: Likewise.
	* gcc.c-torture/compile/pr25311.c: Likewise.
	* gcc.c-torture/compile/pr32139.c: Likewise.
	* gcc.c-torture/compile/pr32399.c: Likewise.
	* gcc.c-torture/compile/pr34091.c: Likewise.
	* gcc.c-torture/compile/pr34458.c: Likewise.
	* gcc.c-torture/compile/pr34688.c: Likewise.
	* gcc.c-torture/compile/pr35607.c: Likewise.
	* gcc.c-torture/compile/pr37258.c: Likewise.
	* gcc.c-torture/compile/pr37327.c: Likewise.
	* gcc.c-torture/compile/pr37381.c: Likewise.
	* gcc.c-torture/compile/pr37433-1.c: Likewise.
	* gcc.c-torture/compile/pr37433.c: Likewise.
	* gcc.c-torture/compile/pr37669-2.c: Likewise.
	* gcc.c-torture/compile/pr37669.c: Likewise.
	* gcc.c-torture/compile/pr37742-3.c: Likewise.
	* gcc.c-torture/compile/pr39937.c: Likewise.
	* gcc.c-torture/compile/pr39941.c: Likewise.
	* gcc.c-torture/compile/pr40080.c: Likewise.
	* gcc.c-torture/compile/pr41181.c: Likewise.
	* gcc.c-torture/compile/pr41634.c: Likewise.
	* gcc.c-torture/compile/pr43415.c: Likewise.
	* gcc.c-torture/compile/pr43417.c: Likewise.
	* gcc.c-torture/compile/pr43635.c: Likewise.
	* gcc.c-torture/compile/pr43791.c: Likewise.
	* gcc.c-torture/compile/pr43845.c: Likewise.
	* gcc.c-torture/compile/pr44043.c: Likewise.
	* gcc.c-torture/compile/pr44063.c: Likewise.
	* gcc.c-torture/compile/pr44788.c: Likewise.
	* gcc.c-torture/compile/pr48596.c: Likewise.
	* gcc.c-torture/compile/pr51694.c: Likewise.
	* gcc.c-torture/compile/pr51856.c: Likewise.
	* gcc.c-torture/compile/pr52750.c: Likewise.
	* gcc.c-torture/compile/pr54713-1.c: Likewise.
	* gcc.c-torture/compile/pr54713-2.c: Likewise.
	* gcc.c-torture/compile/pr54713-3.c: Likewise.
	* gcc.c-torture/compile/pr55921.c: Likewise.
	* gcc.c-torture/compile/pr70240.c: Likewise.
	* gcc.c-torture/compile/pr70355.c: Likewise.
	* gcc.c-torture/compile/pr77754-2.c: Likewise.
	* gcc.c-torture/compile/pr77754-3.c: Likewise.
	* gcc.c-torture/compile/pr77754-4.c: Likewise.
	* gcc.c-torture/compile/pr82052.c: Likewise.
	* gcc.c-torture/compile/pr83487.c: Likewise.
	* gcc.c-torture/compile/pr86122.c: Likewise.
	* gcc.c-torture/compile/pr89280.c: Likewise.
	* gcc.c-torture/compile/pr89663-2.c: Likewise.
	* gcc.c-torture/compile/pret-arg.c: Likewise.
	* gcc.c-torture/compile/pta-1.c: Likewise.
	* gcc.c-torture/compile/regs-arg-size.c: Likewise.
	* gcc.c-torture/compile/sound.c: Likewise.
	* gcc.c-torture/compile/stack-check-1.c: Likewise.
	* gcc.c-torture/compile/structret.c: Likewise.
	* gcc.c-torture/compile/uuarg.c: Likewise.
	* gcc.dg/20001009-1.c: Likewise.
	* gcc.dg/20020418-1.c: Likewise.
	* gcc.dg/20020426-2.c: Likewise.
	* gcc.dg/20020430-1.c: Likewise.
	* gcc.dg/20040306-1.c: Likewise.
	* gcc.dg/20040622-2.c: Likewise.
	* gcc.dg/20050603-2.c: Likewise.
	* gcc.dg/20050629-1.c: Likewise.
	* gcc.dg/20061026.c: Likewise.
	* gcc.dg/Walloc-size-larger-than-18.c: Likewise.
	* gcc.dg/Warray-bounds-3.c: Likewise.
	* gcc.dg/Warray-bounds-30.c: Likewise.
	* gcc.dg/Wframe-larger-than-2.c: Likewise.
	* gcc.dg/Wframe-larger-than.c: Likewise.
	* gcc.dg/Wrestrict-11.c: Likewise.
---
 gcc/testsuite/ChangeLog                            | 165 +++++++++++++++++++++
 gcc/testsuite/gcc.c-torture/compile/20000211-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20000403-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20000609-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20000804-1.c   |   1 +
 gcc/testsuite/gcc.c-torture/compile/20001226-1.c   |   1 +
 gcc/testsuite/gcc.c-torture/compile/20010102-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20010107-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20011109-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20011218-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20011229-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20020129-1.c   |   1 +
 gcc/testsuite/gcc.c-torture/compile/20020304-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20020320-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20020604-1.c   |   1 +
 gcc/testsuite/gcc.c-torture/compile/20020706-1.c   |   1 +
 gcc/testsuite/gcc.c-torture/compile/20020706-2.c   |   1 +
 gcc/testsuite/gcc.c-torture/compile/20021015-1.c   |   1 +
 gcc/testsuite/gcc.c-torture/compile/20021205-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20030903-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20030921-1.c   |   1 +
 gcc/testsuite/gcc.c-torture/compile/20031023-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20031023-2.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20031023-3.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20031023-4.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20031125-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20040101-1.c   |   1 +
 gcc/testsuite/gcc.c-torture/compile/20040317-2.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20040614-1.c   |   1 +
 gcc/testsuite/gcc.c-torture/compile/20040726-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20040909-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20050122-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20050202-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20050303-1.c   |   1 +
 gcc/testsuite/gcc.c-torture/compile/20050622-1.c   |   1 +
 gcc/testsuite/gcc.c-torture/compile/20051216-1.c   |   1 +
 gcc/testsuite/gcc.c-torture/compile/20060208-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20060421-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20071207-1.c   |   1 +
 gcc/testsuite/gcc.c-torture/compile/20080903-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20081108-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20101217-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20121027-1.c   |   2 +
 gcc/testsuite/gcc.c-torture/compile/20150327.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/20151204.c     |   1 +
 gcc/testsuite/gcc.c-torture/compile/900313-1.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/920428-2.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/920501-12.c    |   1 +
 gcc/testsuite/gcc.c-torture/compile/920501-4.c     |   1 +
 gcc/testsuite/gcc.c-torture/compile/920501-7.c     |   1 +
 gcc/testsuite/gcc.c-torture/compile/920625-1.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/920723-1.c     |   1 +
 gcc/testsuite/gcc.c-torture/compile/920928-5.c     |   3 +
 gcc/testsuite/gcc.c-torture/compile/921202-1.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/930117-1.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/930421-1.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/930607-1.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/930623-1.c     |   1 +
 gcc/testsuite/gcc.c-torture/compile/931003-1.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/931004-1.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/950719-1.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/951222-1.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/961004-1.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/980504-1.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/980816-1.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/990517-1.c     |   3 +
 gcc/testsuite/gcc.c-torture/compile/990625-1.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/991213-2.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/DFcmp.c        |   2 +
 gcc/testsuite/gcc.c-torture/compile/HIcmp.c        |   2 +
 gcc/testsuite/gcc.c-torture/compile/HIset.c        |   2 +
 gcc/testsuite/gcc.c-torture/compile/QIcmp.c        |   2 +
 gcc/testsuite/gcc.c-torture/compile/QIset.c        |   2 +
 gcc/testsuite/gcc.c-torture/compile/SFset.c        |   1 +
 gcc/testsuite/gcc.c-torture/compile/SIcmp.c        |   2 +
 gcc/testsuite/gcc.c-torture/compile/SIset.c        |   2 +
 gcc/testsuite/gcc.c-torture/compile/UHIcmp.c       |   2 +
 gcc/testsuite/gcc.c-torture/compile/UQIcmp.c       |   2 +
 gcc/testsuite/gcc.c-torture/compile/USIcmp.c       |   2 +
 gcc/testsuite/gcc.c-torture/compile/bcopy.c        |   1 +
 gcc/testsuite/gcc.c-torture/compile/callind.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/calls-void.c   |   1 +
 gcc/testsuite/gcc.c-torture/compile/calls.c        |   1 +
 gcc/testsuite/gcc.c-torture/compile/consec.c       |   2 +
 .../gcc.c-torture/compile/limits-fndefn.c          |   1 +
 gcc/testsuite/gcc.c-torture/compile/lll.c          |   1 +
 gcc/testsuite/gcc.c-torture/compile/parms.c        |   1 +
 gcc/testsuite/gcc.c-torture/compile/pass.c         |   2 +
 gcc/testsuite/gcc.c-torture/compile/poor.c         |   2 +
 gcc/testsuite/gcc.c-torture/compile/pp.c           |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr21840.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr23929.c      |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr25310.c      |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr25311.c      |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr32139.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr32399.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr34091.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr34458.c      |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr34688.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr35607.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr37258.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr37327.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr37381.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr37433-1.c    |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr37433.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr37669-2.c    |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr37669.c      |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr37742-3.c    |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr39937.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr39941.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr40080.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr41181.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr41634.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr43415.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr43417.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr43635.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr43791.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr43845.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr44043.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr44063.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr44788.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr48596.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr51694.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr51856.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr52750.c      |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr54713-1.c    |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr54713-2.c    |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr54713-3.c    |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr55921.c      |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr70240.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr70355.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr77754-2.c    |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr77754-3.c    |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr77754-4.c    |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr82052.c      |   2 +
 gcc/testsuite/gcc.c-torture/compile/pr83487.c      |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr86122.c      |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr89280.c      |   1 +
 gcc/testsuite/gcc.c-torture/compile/pr89663-2.c    |   1 +
 gcc/testsuite/gcc.c-torture/compile/pret-arg.c     |   2 +
 gcc/testsuite/gcc.c-torture/compile/pta-1.c        |   2 +
 .../gcc.c-torture/compile/regs-arg-size.c          |   2 +
 gcc/testsuite/gcc.c-torture/compile/sound.c        |   1 +
 .../gcc.c-torture/compile/stack-check-1.c          |   1 +
 gcc/testsuite/gcc.c-torture/compile/structret.c    |   2 +
 gcc/testsuite/gcc.c-torture/compile/uuarg.c        |   2 +
 gcc/testsuite/gcc.dg/20001009-1.c                  |   1 +
 gcc/testsuite/gcc.dg/20020418-1.c                  |   1 +
 gcc/testsuite/gcc.dg/20020426-2.c                  |   1 +
 gcc/testsuite/gcc.dg/20020430-1.c                  |   1 +
 gcc/testsuite/gcc.dg/20040306-1.c                  |   2 +-
 gcc/testsuite/gcc.dg/20040622-2.c                  |   1 +
 gcc/testsuite/gcc.dg/20050603-2.c                  |   1 +
 gcc/testsuite/gcc.dg/20050629-1.c                  |   1 +
 gcc/testsuite/gcc.dg/20061026.c                    |   1 +
 gcc/testsuite/gcc.dg/Walloc-size-larger-than-18.c  |   1 +
 gcc/testsuite/gcc.dg/Warray-bounds-3.c             |   1 +
 gcc/testsuite/gcc.dg/Warray-bounds-30.c            |   3 +-
 gcc/testsuite/gcc.dg/Wframe-larger-than-2.c        |   3 +-
 gcc/testsuite/gcc.dg/Wframe-larger-than.c          |   1 +
 gcc/testsuite/gcc.dg/Wrestrict-11.c                |   3 +-
 gcc/testsuite/gcc.dg/builtins-config.h             |   4 +-
 162 files changed, 431 insertions(+), 5 deletions(-)

Comments

Jeff Law Aug. 19, 2019, 1:33 a.m. UTC | #1
On 8/16/19 6:50 PM, Jose E. Marchesi wrote:
> This patch makes many tests in gcc.dg and gcc.c-torture to be skipped
> in bpf-*-* targets.  This is due to the many limitations imposed by
> eBPF to what would be perfectly valid C code: no support for indirect
> calls, no support for more than 5 arguments to function calls, no
> support for indirect jumps, a very limited range for direct jumps, the
> stack limit, lack of standard header files, etc.
> 
> Hopefully some of these restrictions will be relaxed in the future.
> In particular, I expect the stack limit will be significantly
> increased at some point.  Also, as semantics associated with object
> linking get developed in eBPF, it may be possible at some point to
> provide a set of standard run-time libraries for eBPF programs.
> 
> gcc/testsuite/ChangeLog:
> 
> 	* gcc.dg/builtins-config.h: eBPF doesn't support C99 standard
> 	functions.
> 	* gcc.c-torture/compile/20000211-1.c: Skip if target bpf-*-*.
> 	* gcc.c-torture/compile/20000403-1.c: Likewise.
> 	* gcc.c-torture/compile/20000609-1.c: Likewise.
> 	* gcc.c-torture/compile/20000804-1.c: Likewise.
> 	* gcc.c-torture/compile/20001226-1.c: Likewise.
> 	* gcc.c-torture/compile/20010102-1.c: Likewise.
> 	* gcc.c-torture/compile/20010107-1.c: Likewise.
> 	* gcc.c-torture/compile/20011109-1.c: Likewise.
> 	* gcc.c-torture/compile/20011218-1.c: Likewise.
> 	* gcc.c-torture/compile/20011229-1.c: Likewise.
> 	* gcc.c-torture/compile/20020129-1.c: Likewise.
> 	* gcc.c-torture/compile/20020304-1.c: Likewise.
> 	* gcc.c-torture/compile/20020320-1.c: Likewise.
> 	* gcc.c-torture/compile/20020604-1.c: Likewise.
> 	* gcc.c-torture/compile/20020706-1.c: Likewise.
> 	* gcc.c-torture/compile/20020706-2.c: Likewise.
> 	* gcc.c-torture/compile/20021015-1.c: Likewise.
> 	* gcc.c-torture/compile/20021205-1.c: Likewise.
> 	* gcc.c-torture/compile/20030903-1.c: Likewise.
> 	* gcc.c-torture/compile/20030921-1.c: Likewise.
> 	* gcc.c-torture/compile/20031023-1.c: Likewise.
> 	* gcc.c-torture/compile/20031023-2.c: Likewise.
> 	* gcc.c-torture/compile/20031023-3.c: Likewise.
> 	* gcc.c-torture/compile/20031023-4.c: Likewise.
> 	* gcc.c-torture/compile/20031125-1.c: Likewise.
> 	* gcc.c-torture/compile/20040101-1.c: Likewise.
> 	* gcc.c-torture/compile/20040317-2.c: Likewise.
> 	* gcc.c-torture/compile/20040614-1.c: Likewise.
> 	* gcc.c-torture/compile/20040726-1.c: Likewise.
> 	* gcc.c-torture/compile/20040909-1.c: Likewise.
> 	* gcc.c-torture/compile/20050122-1.c: Likewise.
> 	* gcc.c-torture/compile/20050202-1.c: Likewise.
> 	* gcc.c-torture/compile/20050303-1.c: Likewise.
> 	* gcc.c-torture/compile/20050622-1.c: Likewise.
> 	* gcc.c-torture/compile/20051216-1.c: Likewise.
> 	* gcc.c-torture/compile/20060208-1.c: Likewise.
> 	* gcc.c-torture/compile/20060421-1.c: Likewise.
> 	* gcc.c-torture/compile/20071207-1.c: Likewise.
> 	* gcc.c-torture/compile/20080903-1.c: Likewise.
> 	* gcc.c-torture/compile/20081108-1.c: Likewise.
> 	* gcc.c-torture/compile/20101217-1.c: Likewise.
> 	* gcc.c-torture/compile/20121027-1.c: Likewise.
> 	* gcc.c-torture/compile/20150327.c: Likewise.
> 	* gcc.c-torture/compile/20151204.c: Likewise.
> 	* gcc.c-torture/compile/900313-1.c: Likewise.
> 	* gcc.c-torture/compile/920428-2.c: Likewise.
> 	* gcc.c-torture/compile/920501-12.c: Likewise.
> 	* gcc.c-torture/compile/920501-4.c: Likewise.
> 	* gcc.c-torture/compile/920501-7.c: Likewise.
> 	* gcc.c-torture/compile/920625-1.c: Likewise.
> 	* gcc.c-torture/compile/920723-1.c: Likewise.
> 	* gcc.c-torture/compile/920928-5.c: Likewise.
> 	* gcc.c-torture/compile/921202-1.c: Likewise.
> 	* gcc.c-torture/compile/930117-1.c: Likewise.
> 	* gcc.c-torture/compile/930421-1.c: Likewise.
> 	* gcc.c-torture/compile/930607-1.c: Likewise.
> 	* gcc.c-torture/compile/930623-1.c: Likewise.
> 	* gcc.c-torture/compile/931003-1.c: Likewise.
> 	* gcc.c-torture/compile/931004-1.c: Likewise.
> 	* gcc.c-torture/compile/950719-1.c: Likewise.
> 	* gcc.c-torture/compile/951222-1.c: Likewise.
> 	* gcc.c-torture/compile/961004-1.c: Likewise.
> 	* gcc.c-torture/compile/980504-1.c: Likewise.
> 	* gcc.c-torture/compile/980816-1.c: Likewise.
> 	* gcc.c-torture/compile/990517-1.c: Likewise.
> 	* gcc.c-torture/compile/990625-1.c: Likewise.
> 	* gcc.c-torture/compile/991213-2.c: Likewise.
> 	* gcc.c-torture/compile/DFcmp.c: Likewise.
> 	* gcc.c-torture/compile/HIcmp.c: Likewise.
> 	* gcc.c-torture/compile/HIset.c: Likewise.
> 	* gcc.c-torture/compile/QIcmp.c: Likewise.
> 	* gcc.c-torture/compile/QIset.c: Likewise.
> 	* gcc.c-torture/compile/SFset.c: Likewise.
> 	* gcc.c-torture/compile/SIcmp.c: Likewise.
> 	* gcc.c-torture/compile/SIset.c: Likewise.
> 	* gcc.c-torture/compile/UHIcmp.c: Likewise.
> 	* gcc.c-torture/compile/UQIcmp.c: Likewise.
> 	* gcc.c-torture/compile/USIcmp.c: Likewise.
> 	* gcc.c-torture/compile/bcopy.c: Likewise.
> 	* gcc.c-torture/compile/callind.c: Likewise.
> 	* gcc.c-torture/compile/calls-void.c: Likewise.
> 	* gcc.c-torture/compile/calls.c: Likewise.
> 	* gcc.c-torture/compile/consec.c: Likewise.
> 	* gcc.c-torture/compile/limits-fndefn.c: Likewise.
> 	* gcc.c-torture/compile/lll.c: Likewise.
> 	* gcc.c-torture/compile/parms.c: Likewise.
> 	* gcc.c-torture/compile/pass.c: Likewise.
> 	* gcc.c-torture/compile/poor.c: Likewise.
> 	* gcc.c-torture/compile/pp.c: Likewise.
> 	* gcc.c-torture/compile/pr21840.c: Likewise.
> 	* gcc.c-torture/compile/pr23929.c: Likewise.
> 	* gcc.c-torture/compile/pr25310.c: Likewise.
> 	* gcc.c-torture/compile/pr25311.c: Likewise.
> 	* gcc.c-torture/compile/pr32139.c: Likewise.
> 	* gcc.c-torture/compile/pr32399.c: Likewise.
> 	* gcc.c-torture/compile/pr34091.c: Likewise.
> 	* gcc.c-torture/compile/pr34458.c: Likewise.
> 	* gcc.c-torture/compile/pr34688.c: Likewise.
> 	* gcc.c-torture/compile/pr35607.c: Likewise.
> 	* gcc.c-torture/compile/pr37258.c: Likewise.
> 	* gcc.c-torture/compile/pr37327.c: Likewise.
> 	* gcc.c-torture/compile/pr37381.c: Likewise.
> 	* gcc.c-torture/compile/pr37433-1.c: Likewise.
> 	* gcc.c-torture/compile/pr37433.c: Likewise.
> 	* gcc.c-torture/compile/pr37669-2.c: Likewise.
> 	* gcc.c-torture/compile/pr37669.c: Likewise.
> 	* gcc.c-torture/compile/pr37742-3.c: Likewise.
> 	* gcc.c-torture/compile/pr39937.c: Likewise.
> 	* gcc.c-torture/compile/pr39941.c: Likewise.
> 	* gcc.c-torture/compile/pr40080.c: Likewise.
> 	* gcc.c-torture/compile/pr41181.c: Likewise.
> 	* gcc.c-torture/compile/pr41634.c: Likewise.
> 	* gcc.c-torture/compile/pr43415.c: Likewise.
> 	* gcc.c-torture/compile/pr43417.c: Likewise.
> 	* gcc.c-torture/compile/pr43635.c: Likewise.
> 	* gcc.c-torture/compile/pr43791.c: Likewise.
> 	* gcc.c-torture/compile/pr43845.c: Likewise.
> 	* gcc.c-torture/compile/pr44043.c: Likewise.
> 	* gcc.c-torture/compile/pr44063.c: Likewise.
> 	* gcc.c-torture/compile/pr44788.c: Likewise.
> 	* gcc.c-torture/compile/pr48596.c: Likewise.
> 	* gcc.c-torture/compile/pr51694.c: Likewise.
> 	* gcc.c-torture/compile/pr51856.c: Likewise.
> 	* gcc.c-torture/compile/pr52750.c: Likewise.
> 	* gcc.c-torture/compile/pr54713-1.c: Likewise.
> 	* gcc.c-torture/compile/pr54713-2.c: Likewise.
> 	* gcc.c-torture/compile/pr54713-3.c: Likewise.
> 	* gcc.c-torture/compile/pr55921.c: Likewise.
> 	* gcc.c-torture/compile/pr70240.c: Likewise.
> 	* gcc.c-torture/compile/pr70355.c: Likewise.
> 	* gcc.c-torture/compile/pr77754-2.c: Likewise.
> 	* gcc.c-torture/compile/pr77754-3.c: Likewise.
> 	* gcc.c-torture/compile/pr77754-4.c: Likewise.
> 	* gcc.c-torture/compile/pr82052.c: Likewise.
> 	* gcc.c-torture/compile/pr83487.c: Likewise.
> 	* gcc.c-torture/compile/pr86122.c: Likewise.
> 	* gcc.c-torture/compile/pr89280.c: Likewise.
> 	* gcc.c-torture/compile/pr89663-2.c: Likewise.
> 	* gcc.c-torture/compile/pret-arg.c: Likewise.
> 	* gcc.c-torture/compile/pta-1.c: Likewise.
> 	* gcc.c-torture/compile/regs-arg-size.c: Likewise.
> 	* gcc.c-torture/compile/sound.c: Likewise.
> 	* gcc.c-torture/compile/stack-check-1.c: Likewise.
> 	* gcc.c-torture/compile/structret.c: Likewise.
> 	* gcc.c-torture/compile/uuarg.c: Likewise.
> 	* gcc.dg/20001009-1.c: Likewise.
> 	* gcc.dg/20020418-1.c: Likewise.
> 	* gcc.dg/20020426-2.c: Likewise.
> 	* gcc.dg/20020430-1.c: Likewise.
> 	* gcc.dg/20040306-1.c: Likewise.
> 	* gcc.dg/20040622-2.c: Likewise.
> 	* gcc.dg/20050603-2.c: Likewise.
> 	* gcc.dg/20050629-1.c: Likewise.
> 	* gcc.dg/20061026.c: Likewise.
> 	* gcc.dg/Walloc-size-larger-than-18.c: Likewise.
> 	* gcc.dg/Warray-bounds-3.c: Likewise.
> 	* gcc.dg/Warray-bounds-30.c: Likewise.
> 	* gcc.dg/Wframe-larger-than-2.c: Likewise.
> 	* gcc.dg/Wframe-larger-than.c: Likewise.
> 	* gcc.dg/Wrestrict-11.c: Likewise.
So I think we probably want an effective target check for indirect calls
rather than checking explicitly for ebpf in all these files.

It also seems like rather than checking for ebpf on files with large
stacks, we should be using the generic mechanisms to defined the allowed
size of the stack (mentioned in prior review) & mark test which use too
much space.  This would almost certainly help other embedded targets as
well.

Not sure the best way to deal with too many arguments.  I suspect we
want an efffective target check for that.  Keeping this up-to-date will
be painful as people write more tests.




  /* Copyright (C) 2000, 2003 Free Software Foundation */
>  __complex__ long long f ()
> diff --git a/gcc/testsuite/gcc.c-torture/compile/20001226-1.c b/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
> index be0bdcf7631..9f6bd0af2e5 100644
> --- a/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
> +++ b/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
> @@ -3,6 +3,7 @@
>  /* { dg-skip-if "too much code for pdp11" { "pdp11-*-*" } } */
>  /* { dg-xfail-if "PR36698" { spu-*-* } { "-O0" } { "" } } */
>  /* { dg-skip-if "" { m32c-*-* } } */
> +/* { dg-skip-if "jumps too far for eBPF" { bpf-*-* } } */
>  /* { dg-timeout-factor 4.0 } */
Jumps too far is probably an indication you need to fix something in
your port.  Though I guess its OK if you're never going to support far
away targets.



>  
> diff --git a/gcc/testsuite/gcc.c-torture/compile/20101217-1.c b/gcc/testsuite/gcc.c-torture/compile/20101217-1.c
> index c4eef0ed464..cd902afe709 100644
> --- a/gcc/testsuite/gcc.c-torture/compile/20101217-1.c
> +++ b/gcc/testsuite/gcc.c-torture/compile/20101217-1.c
> @@ -1,3 +1,5 @@
> +/* { dg-skip-if "no usable stdio.h for eBPF" { bpf-*-* } } */
I think this is only to get the printf prototype.  I suspect you could
just provide a suitable prototype and drop the #include <stdio.h>.


Jeff
Segher Boessenkool Aug. 19, 2019, 10:37 a.m. UTC | #2
On Sun, Aug 18, 2019 at 07:33:20PM -0600, Jeff Law wrote:
> On 8/16/19 6:50 PM, Jose E. Marchesi wrote:
> So I think we probably want an effective target check for indirect calls
> rather than checking explicitly for ebpf in all these files.

+1

> It also seems like rather than checking for ebpf on files with large
> stacks, we should be using the generic mechanisms to defined the allowed
> size of the stack (mentioned in prior review) & mark test which use too
> much space.  This would almost certainly help other embedded targets as
> well.

+2

> Not sure the best way to deal with too many arguments.  I suspect we
> want an efffective target check for that.  Keeping this up-to-date will
> be painful as people write more tests.

You could add a command line option to *allow* many args.  You wouldn't
use that in the kernel, but it helps (compiler) testing a lot.

You could do something similar for indirect jumps, and bigger stack size,
etc.


Segher
Jose E. Marchesi Aug. 19, 2019, 2:23 p.m. UTC | #3
[...]
    > 	* gcc.dg/Wframe-larger-than-2.c: Likewise.
    > 	* gcc.dg/Wframe-larger-than.c: Likewise.
    > 	* gcc.dg/Wrestrict-11.c: Likewise.
    So I think we probably want an effective target check for indirect calls
    rather than checking explicitly for ebpf in all these files.
    
Ok, will introduce it.

    It also seems like rather than checking for ebpf on files with large
    stacks, we should be using the generic mechanisms to defined the allowed
    size of the stack (mentioned in prior review) & mark test which use too
    much space.  This would almost certainly help other embedded targets as
    well.
    
I first thought about doing that, but hesitated when I realized it would
require to alter existing tests in no trivial ways: will the test still
effectively test whatever it is supposed to test, after the size of an
array is changed, for example?

    Not sure the best way to deal with too many arguments.  I suspect we
    want an efffective target check for that.  Keeping this up-to-date will
    be painful as people write more tests.
    
Yeah, that won't be fun :(

      /* Copyright (C) 2000, 2003 Free Software Foundation */
    >  __complex__ long long f ()
    > diff --git a/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
    > b/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
    > index be0bdcf7631..9f6bd0af2e5 100644
    > --- a/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
    > +++ b/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
    > @@ -3,6 +3,7 @@
    >  /* { dg-skip-if "too much code for pdp11" { "pdp11-*-*" } } */
    >  /* { dg-xfail-if "PR36698" { spu-*-* } { "-O0" } { "" } } */
    >  /* { dg-skip-if "" { m32c-*-* } } */
    > +/* { dg-skip-if "jumps too far for eBPF" { bpf-*-* } } */
    >  /* { dg-timeout-factor 4.0 } */
    Jumps too far is probably an indication you need to fix something in
    your port.  Though I guess its OK if you're never going to support far
    away targets.

The reasons for this are that eBPF doesn't have indirect jump
instructions, and the direct jump instruction's displacement is a signed
PC-relative 16-bit offset, in 64-bit word units.

So, unless the compiler gets able to generate a "chain" of direct jumps
to reach the destination (that would be a fun hack :D) the range for
branches is severely limited.

    > diff --git a/gcc/testsuite/gcc.c-torture/compile/20101217-1.c
    > b/gcc/testsuite/gcc.c-torture/compile/20101217-1.c
    > index c4eef0ed464..cd902afe709 100644
    > --- a/gcc/testsuite/gcc.c-torture/compile/20101217-1.c
    > +++ b/gcc/testsuite/gcc.c-torture/compile/20101217-1.c
    > @@ -1,3 +1,5 @@
    > +/* { dg-skip-if "no usable stdio.h for eBPF" { bpf-*-* } } */
    I think this is only to get the printf prototype.  I suspect you could
    just provide a suitable prototype and drop the #include <stdio.h>.
    
Nice, will do just that.
Jeff Law Aug. 19, 2019, 7:47 p.m. UTC | #4
On 8/19/19 8:23 AM, Jose E. Marchesi wrote:
> 
>     [...]
>     > 	* gcc.dg/Wframe-larger-than-2.c: Likewise.
>     > 	* gcc.dg/Wframe-larger-than.c: Likewise.
>     > 	* gcc.dg/Wrestrict-11.c: Likewise.
>     So I think we probably want an effective target check for indirect calls
>     rather than checking explicitly for ebpf in all these files.
>     
> Ok, will introduce it.
> 
>     It also seems like rather than checking for ebpf on files with large
>     stacks, we should be using the generic mechanisms to defined the allowed
>     size of the stack (mentioned in prior review) & mark test which use too
>     much space.  This would almost certainly help other embedded targets as
>     well.
>     
> I first thought about doing that, but hesitated when I realized it would
> require to alter existing tests in no trivial ways: will the test still
> effectively test whatever it is supposed to test, after the size of an
> array is changed, for example?
I think you just add something like

/* dg-require-stack-size "<size>" */

Assuming that's right you don't have to worry about changing the test
itself and potentially changing its meaning.

I wouldn't necessarily try to figure the exact size needed by each test.
 A reasonable guesstimation ought to be sufficient.


> 
>     Not sure the best way to deal with too many arguments.  I suspect we
>     want an efffective target check for that.  Keeping this up-to-date will
>     be painful as people write more tests.
>     
> Yeah, that won't be fun :(
> 
>       /* Copyright (C) 2000, 2003 Free Software Foundation */
>     >  __complex__ long long f ()
>     > diff --git a/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
>     > b/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
>     > index be0bdcf7631..9f6bd0af2e5 100644
>     > --- a/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
>     > +++ b/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
>     > @@ -3,6 +3,7 @@
>     >  /* { dg-skip-if "too much code for pdp11" { "pdp11-*-*" } } */
>     >  /* { dg-xfail-if "PR36698" { spu-*-* } { "-O0" } { "" } } */
>     >  /* { dg-skip-if "" { m32c-*-* } } */
>     > +/* { dg-skip-if "jumps too far for eBPF" { bpf-*-* } } */
>     >  /* { dg-timeout-factor 4.0 } */
>     Jumps too far is probably an indication you need to fix something in
>     your port.  Though I guess its OK if you're never going to support far
>     away targets.
> 
> The reasons for this are that eBPF doesn't have indirect jump
> instructions, and the direct jump instruction's displacement is a signed
> PC-relative 16-bit offset, in 64-bit word units.
> 
> So, unless the compiler gets able to generate a "chain" of direct jumps
> to reach the destination (that would be a fun hack :D) the range for
> branches is severely limited.
OK.  Perhaps another effective target check.   Or leave this one with
the epf check.

jeff
Jose E. Marchesi Aug. 19, 2019, 8:02 p.m. UTC | #5
>     It also seems like rather than checking for ebpf on files with large
    >     stacks, we should be using the generic mechanisms to defined the allowed
    >     size of the stack (mentioned in prior review) & mark test which use too
    >     much space.  This would almost certainly help other embedded targets as
    >     well.
    >     
    > I first thought about doing that, but hesitated when I realized it would
    > require to alter existing tests in no trivial ways: will the test still
    > effectively test whatever it is supposed to test, after the size of an
    > array is changed, for example?
    I think you just add something like
    
    /* dg-require-stack-size "<size>" */
    
    Assuming that's right you don't have to worry about changing the test
    itself and potentially changing its meaning.
    
    I wouldn't necessarily try to figure the exact size needed by each test.
     A reasonable guesstimation ought to be sufficient.

Oh nice, I didn't know about that directive.
Thanks!

Patch
diff mbox series

diff --git a/gcc/testsuite/gcc.c-torture/compile/20000211-1.c b/gcc/testsuite/gcc.c-torture/compile/20000211-1.c
index 7a7c8c0cb20..b83d6a40520 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20000211-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20000211-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 typedef __SIZE_TYPE__ size_t;
 typedef unsigned char Bufbyte;
 typedef int Bytecount;
diff --git a/gcc/testsuite/gcc.c-torture/compile/20000403-1.c b/gcc/testsuite/gcc.c-torture/compile/20000403-1.c
index 27345b56fef..cb56028fb8b 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20000403-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20000403-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 struct utsname {
 	char	sysname[32 ];	 
 	char	version[32 ];	 
diff --git a/gcc/testsuite/gcc.c-torture/compile/20000609-1.c b/gcc/testsuite/gcc.c-torture/compile/20000609-1.c
index f03aa35a7ac..9a891a82534 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20000609-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20000609-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 int main ()
 {
   char temp[1024] = "tempfile";
diff --git a/gcc/testsuite/gcc.c-torture/compile/20000804-1.c b/gcc/testsuite/gcc.c-torture/compile/20000804-1.c
index 35464c212d2..1a8e80c5489 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20000804-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20000804-1.c
@@ -6,6 +6,7 @@ 
 /* { dg-skip-if "Not enough 64-bit registers" { pdp11-*-* } { "-O0" } { "" } } */
 /* { dg-xfail-if "Inconsistent constraint on asm" { csky-*-* } { "-O0" } { "" } } */
 /* { dg-xfail-if "" { h8300-*-* } } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 /* Copyright (C) 2000, 2003 Free Software Foundation */
 __complex__ long long f ()
diff --git a/gcc/testsuite/gcc.c-torture/compile/20001226-1.c b/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
index be0bdcf7631..9f6bd0af2e5 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20001226-1.c
@@ -3,6 +3,7 @@ 
 /* { dg-skip-if "too much code for pdp11" { "pdp11-*-*" } } */
 /* { dg-xfail-if "PR36698" { spu-*-* } { "-O0" } { "" } } */
 /* { dg-skip-if "" { m32c-*-* } } */
+/* { dg-skip-if "jumps too far for eBPF" { bpf-*-* } } */
 /* { dg-timeout-factor 4.0 } */
 
 /* This testcase exposed two branch shortening bugs on powerpc.  */
diff --git a/gcc/testsuite/gcc.c-torture/compile/20010102-1.c b/gcc/testsuite/gcc.c-torture/compile/20010102-1.c
index a409b566098..2896f6a6b75 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20010102-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20010102-1.c
@@ -4,6 +4,8 @@ 
 
    Copyright (C) 2001  Free Software Foundation.  */
 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 # define PTR_INT_TYPE __PTRDIFF_TYPE__
 
 struct _obstack_chunk
diff --git a/gcc/testsuite/gcc.c-torture/compile/20010107-1.c b/gcc/testsuite/gcc.c-torture/compile/20010107-1.c
index 222def4d9ef..1214beb0d26 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20010107-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20010107-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 unsigned long x[4];
 
 void foo(void)
diff --git a/gcc/testsuite/gcc.c-torture/compile/20011109-1.c b/gcc/testsuite/gcc.c-torture/compile/20011109-1.c
index f1987a74bf2..96b225f2fea 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20011109-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20011109-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 typedef struct { short x[4]; } S;
 typedef struct { unsigned int a, b, c; S *d; } T;
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/20011218-1.c b/gcc/testsuite/gcc.c-torture/compile/20011218-1.c
index bf63489b855..d7971655c58 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20011218-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20011218-1.c
@@ -2,6 +2,8 @@ 
    for the indirect call was exposed too early and reload couldn't
    allocate it for multiplication and division.  */
 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 struct S {
   int a, b;
   void (*f) (long, int);
diff --git a/gcc/testsuite/gcc.c-torture/compile/20011229-1.c b/gcc/testsuite/gcc.c-torture/compile/20011229-1.c
index 97b2655434a..7ebd2068d22 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20011229-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20011229-1.c
@@ -1,5 +1,7 @@ 
 /* ICE: call insn does not satisfy its constraints, MMIX port.
    Origin: ghostscript-6.52, reduction from hp@bitrange.com.  */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 struct s0
 {
   void (*init_color)(void *, void *);
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020129-1.c b/gcc/testsuite/gcc.c-torture/compile/20020129-1.c
index 7b17ba475e4..b137912f393 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20020129-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20020129-1.c
@@ -1,4 +1,5 @@ 
 /* Test call to static variable.  */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
 
 typedef struct
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020304-1.c b/gcc/testsuite/gcc.c-torture/compile/20020304-1.c
index 3940d5ffd2e..726ba925b7e 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20020304-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20020304-1.c
@@ -4,6 +4,8 @@ 
    Original bug report is c/5830 by Manuel Serrano <Manuel.Serrano@inria.fr>.
  */
 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 typedef union scmobj {
   struct pair {
     union scmobj *car;
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020320-1.c b/gcc/testsuite/gcc.c-torture/compile/20020320-1.c
index 385c061e193..36245fc7c17 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20020320-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20020320-1.c
@@ -2,6 +2,8 @@ 
    This testcase caused infinite loop in flow (several places),
    because flow assumes gen_jump generates simple_jump_p.  */
 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 typedef void (*T) (void);
 extern T x[];
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020604-1.c b/gcc/testsuite/gcc.c-torture/compile/20020604-1.c
index d2e186a7182..82eb47a1fa9 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20020604-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20020604-1.c
@@ -1,6 +1,7 @@ 
 /* { dg-do assemble } */
 /* { dg-require-effective-target ptr32plus } */
 /* { dg-xfail-if "The array too big" { "h8300-*-*" } { "-mno-h" "-mn" } { "" } } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 /* PR c/6957
    This testcase ICEd at -O2 on IA-32, because
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020706-1.c b/gcc/testsuite/gcc.c-torture/compile/20020706-1.c
index c8811bc68ff..d2e0b330ef5 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20020706-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20020706-1.c
@@ -1,5 +1,6 @@ 
 // Contributed by Alexandre Oliva <aoliva@redhat.com>
 // From Red Hat case 106165.
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
 
 typedef struct s1
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020706-2.c b/gcc/testsuite/gcc.c-torture/compile/20020706-2.c
index b84dda60fd3..14a872f6abd 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20020706-2.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20020706-2.c
@@ -1,5 +1,6 @@ 
 // Contributed by Alexandre Oliva <aoliva@redhat.com>
 // From Red Hat case 106165.
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
 
 typedef unsigned short (FUNC_P) (void *, unsigned char *, unsigned short);
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/20021015-1.c b/gcc/testsuite/gcc.c-torture/compile/20021015-1.c
index 789b8a8b176..dd49659a9d4 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20021015-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20021015-1.c
@@ -1,4 +1,5 @@ 
 /* PR target/7370.  */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 int g (int *x, int *y);
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/20021205-1.c b/gcc/testsuite/gcc.c-torture/compile/20021205-1.c
index 73648e94951..f9959ca96f4 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20021205-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20021205-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 typedef struct x x;
 extern void *baz(char *);
 struct x { char * (*bar) (int); };
diff --git a/gcc/testsuite/gcc.c-torture/compile/20030903-1.c b/gcc/testsuite/gcc.c-torture/compile/20030903-1.c
index fa4d30db6c0..116b0923721 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20030903-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20030903-1.c
@@ -1,6 +1,8 @@ 
 /* Derived from PR optimization/11700.  */
 /* The compiler used to ICE during reload for m68k targets.  */
 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 void check_complex (__complex__ double, __complex__ double,
                     __complex__ double, __complex__ int);
 void check_float (double, double, double, int);
diff --git a/gcc/testsuite/gcc.c-torture/compile/20030921-1.c b/gcc/testsuite/gcc.c-torture/compile/20030921-1.c
index 8199dc657f2..6b6b559e331 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20030921-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20030921-1.c
@@ -2,6 +2,7 @@ 
    f is not being emitted. TREE_SYMBOL_REFERENCED was being set
    instead of calling mark_referenced.  */
 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
 
 static void f(void);
 void g(void (*x) (void)){x();}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20031023-1.c b/gcc/testsuite/gcc.c-torture/compile/20031023-1.c
index be837762e66..960fec3667a 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20031023-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20031023-1.c
@@ -1,5 +1,7 @@ 
 /* Declaration of the frame size doesn't work on ptx.  */
 /* { dg-require-effective-target untyped_assembly } */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 #ifndef ASIZE
 # define ASIZE 0x10000000000UL
 #endif
diff --git a/gcc/testsuite/gcc.c-torture/compile/20031023-2.c b/gcc/testsuite/gcc.c-torture/compile/20031023-2.c
index 66d66458c85..5df9162c487 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20031023-2.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20031023-2.c
@@ -1,4 +1,6 @@ 
 /* Declaration of the frame size doesn't work on ptx.  */
 /* { dg-require-effective-target untyped_assembly } */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 #define ASIZE 0x1000000000UL
 #include "20031023-1.c"
diff --git a/gcc/testsuite/gcc.c-torture/compile/20031023-3.c b/gcc/testsuite/gcc.c-torture/compile/20031023-3.c
index 5859634c343..5030c9feb45 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20031023-3.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20031023-3.c
@@ -1,4 +1,6 @@ 
 /* Declaration of the frame size doesn't work on ptx.  */
 /* { dg-require-effective-target untyped_assembly } */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 #define ASIZE 0x100000000UL
 #include "20031023-1.c"
diff --git a/gcc/testsuite/gcc.c-torture/compile/20031023-4.c b/gcc/testsuite/gcc.c-torture/compile/20031023-4.c
index 5c61f3743d4..db15721c5e9 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20031023-4.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20031023-4.c
@@ -1,2 +1,4 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 #define ASIZE 0x80000000UL
 #include "20031023-1.c"
diff --git a/gcc/testsuite/gcc.c-torture/compile/20031125-1.c b/gcc/testsuite/gcc.c-torture/compile/20031125-1.c
index d3e92679c8b..bec6c9372a8 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20031125-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20031125-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 short *_offsetTable;
 /* This tests to make sure PRE splits the entry block ->block 0 edge
    when there are multiple block 0 predecessors.
diff --git a/gcc/testsuite/gcc.c-torture/compile/20040101-1.c b/gcc/testsuite/gcc.c-torture/compile/20040101-1.c
index 5c2688ad830..6027cb53fb4 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20040101-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20040101-1.c
@@ -1,4 +1,5 @@ 
 /* { dg-skip-if "not enough registers" { pdp11-*-* } } */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
 
 typedef unsigned short uint16_t;
 typedef unsigned int uint32_t;
diff --git a/gcc/testsuite/gcc.c-torture/compile/20040317-2.c b/gcc/testsuite/gcc.c-torture/compile/20040317-2.c
index 3c8ee2b8ec5..3a1fbde2969 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20040317-2.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20040317-2.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 typedef struct _ScaleRec *ScaleWidget;
 typedef struct
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/20040614-1.c b/gcc/testsuite/gcc.c-torture/compile/20040614-1.c
index b692ab569f2..728a9f1d4cb 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20040614-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20040614-1.c
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target label_values } */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
 
 void f(int r1, int *fp) 
 {     
diff --git a/gcc/testsuite/gcc.c-torture/compile/20040726-1.c b/gcc/testsuite/gcc.c-torture/compile/20040726-1.c
index e53ccd655bb..aea43a56f34 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20040726-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20040726-1.c
@@ -1,4 +1,6 @@ 
 /* PR rtl-optimization/16643 */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 void foo (int a, int b, int c, int d, int e, int *f)
 {
   if (a == 0)
diff --git a/gcc/testsuite/gcc.c-torture/compile/20040909-1.c b/gcc/testsuite/gcc.c-torture/compile/20040909-1.c
index 8bbf90191b4..aaeeedc97cd 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20040909-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20040909-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 static __inline__ int
 one_utf8_to_utf16 () { }
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/20050122-1.c b/gcc/testsuite/gcc.c-torture/compile/20050122-1.c
index a70907d9051..0e66cd078e0 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20050122-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20050122-1.c
@@ -1,4 +1,6 @@ 
 /* From PR 19484.  */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 extern void foo (void) __attribute__((noreturn));
 int n;
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/20050202-1.c b/gcc/testsuite/gcc.c-torture/compile/20050202-1.c
index b3f81764538..30838c6c702 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20050202-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20050202-1.c
@@ -1,4 +1,6 @@ 
 /* From PR 19578.  */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 extern void foo (void) __attribute__((noreturn));
 
 void
diff --git a/gcc/testsuite/gcc.c-torture/compile/20050303-1.c b/gcc/testsuite/gcc.c-torture/compile/20050303-1.c
index 22154b30af5..3df81e43fef 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20050303-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20050303-1.c
@@ -1,5 +1,6 @@ 
 /* { dg-require-effective-target int32plus } */
 /* { dg-require-effective-target size32plus } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 void crc()
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/20050622-1.c b/gcc/testsuite/gcc.c-torture/compile/20050622-1.c
index 829f9dd857d..d8d29adc19a 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20050622-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20050622-1.c
@@ -1,4 +1,5 @@ 
 /* { dg-skip-if "Array too big" { "pdp11-*-*" } { "-mint32" } } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 #if __SCHAR_MAX__ == 127 && __INT_MAX__ >= 2147483647
 struct S { char buf[72*1024*1024]; };
diff --git a/gcc/testsuite/gcc.c-torture/compile/20051216-1.c b/gcc/testsuite/gcc.c-torture/compile/20051216-1.c
index ed6ac723069..55751ec8ab2 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20051216-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20051216-1.c
@@ -1,4 +1,5 @@ 
 /* PR rtl-optimization/25432 */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
 
 void *malloc (__SIZE_TYPE__);
 void *realloc (void *, __SIZE_TYPE__);
diff --git a/gcc/testsuite/gcc.c-torture/compile/20060208-1.c b/gcc/testsuite/gcc.c-torture/compile/20060208-1.c
index 3881474f722..e9d93023f03 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20060208-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20060208-1.c
@@ -1,5 +1,7 @@ 
 /* PR middle-end/26092 */
 /* { dg-skip-if "can't take address of malloc" { nvptx-*-* } } */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 typedef __SIZE_TYPE__ size_t;
 extern void *malloc (size_t);
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/20060421-1.c b/gcc/testsuite/gcc.c-torture/compile/20060421-1.c
index 1bd4079b4c8..c6b2905497d 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20060421-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20060421-1.c
@@ -1,4 +1,6 @@ 
 /* This test used to ICE on ARM with -mcpu=iwmmxt.  */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 void
 foo (void)
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/20071207-1.c b/gcc/testsuite/gcc.c-torture/compile/20071207-1.c
index 27b871616b1..f313bd15993 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20071207-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20071207-1.c
@@ -1,4 +1,5 @@ 
 /* PR tree-optimization/34371 */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 /* Testcase by Martin Michlmayr <tbm@cyrius.com> */
 
 void centerln (int width, int ch, char *s)
diff --git a/gcc/testsuite/gcc.c-torture/compile/20080903-1.c b/gcc/testsuite/gcc.c-torture/compile/20080903-1.c
index 180b926bf3d..c7e479174da 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20080903-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20080903-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 struct bar { unsigned short length; };
 
 int
diff --git a/gcc/testsuite/gcc.c-torture/compile/20081108-1.c b/gcc/testsuite/gcc.c-torture/compile/20081108-1.c
index 3209a90c83b..0b45e2341dc 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20081108-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20081108-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 /* Test function call with function designator involving VLA
    side-effects does not lead to an ICE.  */
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/20101217-1.c b/gcc/testsuite/gcc.c-torture/compile/20101217-1.c
index c4eef0ed464..cd902afe709 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20101217-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20101217-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no usable stdio.h for eBPF" { bpf-*-* } } */
+
 /* Testcase provided by HUAWEI.  */
 #include <stdio.h>
 int main()
diff --git a/gcc/testsuite/gcc.c-torture/compile/20121027-1.c b/gcc/testsuite/gcc.c-torture/compile/20121027-1.c
index 3d3ff31f69b..575236bbc9e 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20121027-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20121027-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 extern int nc;
 void f(void)
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/20150327.c b/gcc/testsuite/gcc.c-torture/compile/20150327.c
index 373ea6183c3..c46d9c58066 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20150327.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20150327.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 int a;
 int (*b)(), (*c)();
 int fn1(int p1) {
diff --git a/gcc/testsuite/gcc.c-torture/compile/20151204.c b/gcc/testsuite/gcc.c-torture/compile/20151204.c
index e41f6c1dca9..1701ef124d7 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20151204.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20151204.c
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target size20plus } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 typedef __SIZE_TYPE__ size_t;
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/900313-1.c b/gcc/testsuite/gcc.c-torture/compile/900313-1.c
index 2bac5814a7b..12252b4b229 100644
--- a/gcc/testsuite/gcc.c-torture/compile/900313-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/900313-1.c
@@ -1,4 +1,6 @@ 
 /* { dg-require-effective-target alloca } */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 main ()
 {
   char *a;
diff --git a/gcc/testsuite/gcc.c-torture/compile/920428-2.c b/gcc/testsuite/gcc.c-torture/compile/920428-2.c
index f313b32986b..72c29f29d43 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920428-2.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920428-2.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 double sin(double x);
 double cos(double x);
 double tan(double x);
diff --git a/gcc/testsuite/gcc.c-torture/compile/920501-12.c b/gcc/testsuite/gcc.c-torture/compile/920501-12.c
index 68892a689df..8d6d839a449 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920501-12.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920501-12.c
@@ -1,5 +1,6 @@ 
 /* { dg-do assemble } */
 /* { dg-skip-if "Array too big" { "pdp11-*-*" } { "-mint32" } } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 x(x){            return 3 + x;}
 a(x){int y[994]; return 3 + x;}
diff --git a/gcc/testsuite/gcc.c-torture/compile/920501-4.c b/gcc/testsuite/gcc.c-torture/compile/920501-4.c
index 10736ae76a4..8675e425152 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920501-4.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920501-4.c
@@ -1,6 +1,7 @@ 
 /* { dg-do assemble } */
 /* { dg-skip-if "ptxas times out" { nvptx-*-* } { "-O1" } { "" } } */
 /* { dg-skip-if "Array too big" { "pdp11-*-*" } { "-mint32" } } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 foo ()
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/920501-7.c b/gcc/testsuite/gcc.c-torture/compile/920501-7.c
index 2af15e3b7ec..0fac5f3495f 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920501-7.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920501-7.c
@@ -1,3 +1,4 @@ 
 /* { dg-require-effective-target label_values } */
+/* { dg-skip-if "no support for indirect jumps" { bpf-*-* } } */
 
 x(){if(&&e-&&b<0)x();b:goto*&&b;e:;}
diff --git a/gcc/testsuite/gcc.c-torture/compile/920625-1.c b/gcc/testsuite/gcc.c-torture/compile/920625-1.c
index 720d43fd42f..759a356b5b7 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920625-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920625-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 typedef unsigned long int unsigned_word;
 typedef signed long int signed_word;
 typedef unsigned_word word;
diff --git a/gcc/testsuite/gcc.c-torture/compile/920723-1.c b/gcc/testsuite/gcc.c-torture/compile/920723-1.c
index cd8710be7e8..d6f85817e65 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920723-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920723-1.c
@@ -1,4 +1,5 @@ 
 /* { dg-add-options stack_size } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 #if defined(STACK_SIZE) && STACK_SIZE < 65536
 # define GITT_SIZE 75
diff --git a/gcc/testsuite/gcc.c-torture/compile/920928-5.c b/gcc/testsuite/gcc.c-torture/compile/920928-5.c
index 8c975f0c051..70da53261df 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920928-5.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920928-5.c
@@ -1,4 +1,7 @@ 
 /* REPRODUCED:CC1:SIGNAL MACHINE:m68k OPTIONS:-fpcc-struct-return */
+
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 struct b{};
 f(struct b(*f)())
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/921202-1.c b/gcc/testsuite/gcc.c-torture/compile/921202-1.c
index 1287edc57b8..31f969e7c8c 100644
--- a/gcc/testsuite/gcc.c-torture/compile/921202-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/921202-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 f ()
 {
   long dx[2055];
diff --git a/gcc/testsuite/gcc.c-torture/compile/930117-1.c b/gcc/testsuite/gcc.c-torture/compile/930117-1.c
index 83317cdd07b..9321448082f 100644
--- a/gcc/testsuite/gcc.c-torture/compile/930117-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/930117-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 f(x)
 {
   (*(void (*)())&x)();
diff --git a/gcc/testsuite/gcc.c-torture/compile/930421-1.c b/gcc/testsuite/gcc.c-torture/compile/930421-1.c
index 01b465f7fec..9e16fe17dd9 100644
--- a/gcc/testsuite/gcc.c-torture/compile/930421-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/930421-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 double q(double);
 
 f (int **x, int *r, int *s, int a, int b, int c, int d)
diff --git a/gcc/testsuite/gcc.c-torture/compile/930607-1.c b/gcc/testsuite/gcc.c-torture/compile/930607-1.c
index 97c94b25ec3..f866dbfb3dc 100644
--- a/gcc/testsuite/gcc.c-torture/compile/930607-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/930607-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 typedef void f ();
 typedef f *pf;
 long long i;
diff --git a/gcc/testsuite/gcc.c-torture/compile/930623-1.c b/gcc/testsuite/gcc.c-torture/compile/930623-1.c
index 022ad01804e..9dbfe1e73c5 100644
--- a/gcc/testsuite/gcc.c-torture/compile/930623-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/930623-1.c
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target untyped_assembly } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 g (a, b) {}
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/931003-1.c b/gcc/testsuite/gcc.c-torture/compile/931003-1.c
index 922b14379c9..8db815fc764 100644
--- a/gcc/testsuite/gcc.c-torture/compile/931003-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/931003-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 f (n, a)
      int n;
      double a[];
diff --git a/gcc/testsuite/gcc.c-torture/compile/931004-1.c b/gcc/testsuite/gcc.c-torture/compile/931004-1.c
index 0e741fd4ac0..34766b5559a 100644
--- a/gcc/testsuite/gcc.c-torture/compile/931004-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/931004-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 #define A "This is a long test that tests the structure initialization"
 #define B A,A
 #define C B,B,B,B
diff --git a/gcc/testsuite/gcc.c-torture/compile/950719-1.c b/gcc/testsuite/gcc.c-torture/compile/950719-1.c
index d3277fada4e..fa1b01b9a7e 100644
--- a/gcc/testsuite/gcc.c-torture/compile/950719-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/950719-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 typedef struct
 {
   int Header;
diff --git a/gcc/testsuite/gcc.c-torture/compile/951222-1.c b/gcc/testsuite/gcc.c-torture/compile/951222-1.c
index b8246f5fe81..8a447f3473c 100644
--- a/gcc/testsuite/gcc.c-torture/compile/951222-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/951222-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 extern long long foo ();
 
 long long
diff --git a/gcc/testsuite/gcc.c-torture/compile/961004-1.c b/gcc/testsuite/gcc.c-torture/compile/961004-1.c
index 6407b625d66..cf47f60d5ea 100644
--- a/gcc/testsuite/gcc.c-torture/compile/961004-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/961004-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 void
 f1 (o1, o2, o3, i, j, k)
      long long *o1, *o2, *o3;
diff --git a/gcc/testsuite/gcc.c-torture/compile/980504-1.c b/gcc/testsuite/gcc.c-torture/compile/980504-1.c
index 7b757ccd2e8..6e043a7af19 100644
--- a/gcc/testsuite/gcc.c-torture/compile/980504-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/980504-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 typedef struct _geom_elem {
   double        coeffs[6];
 } pGeomDefRec, *pGeomDefPtr;
diff --git a/gcc/testsuite/gcc.c-torture/compile/980816-1.c b/gcc/testsuite/gcc.c-torture/compile/980816-1.c
index a79100fab57..5bd83b17063 100644
--- a/gcc/testsuite/gcc.c-torture/compile/980816-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/980816-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 typedef __SIZE_TYPE__ size_t;
 typedef void *XtPointer;
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/990517-1.c b/gcc/testsuite/gcc.c-torture/compile/990517-1.c
index c738d4be760..5a08a866002 100644
--- a/gcc/testsuite/gcc.c-torture/compile/990517-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/990517-1.c
@@ -1,4 +1,7 @@ 
 /* Extracted from the sdm module in perl.  */
+
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 typedef struct {
 	char *dptr;
 	int dsize;
diff --git a/gcc/testsuite/gcc.c-torture/compile/990625-1.c b/gcc/testsuite/gcc.c-torture/compile/990625-1.c
index 97a2331c7a5..befff06579e 100644
--- a/gcc/testsuite/gcc.c-torture/compile/990625-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/990625-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no string.h in eBPF" { bpf-*-* } } */
+
 #define __USE_STRING_INLINES
 #include <string.h>
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/991213-2.c b/gcc/testsuite/gcc.c-torture/compile/991213-2.c
index 98385d56263..aecf4e0f0cb 100644
--- a/gcc/testsuite/gcc.c-torture/compile/991213-2.c
+++ b/gcc/testsuite/gcc.c-torture/compile/991213-2.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 typedef long		__kernel_time_t;
 typedef __kernel_time_t		time_t;
 time2(
diff --git a/gcc/testsuite/gcc.c-torture/compile/DFcmp.c b/gcc/testsuite/gcc.c-torture/compile/DFcmp.c
index 3bb253476d7..808874de1a8 100644
--- a/gcc/testsuite/gcc.c-torture/compile/DFcmp.c
+++ b/gcc/testsuite/gcc.c-torture/compile/DFcmp.c
@@ -1,4 +1,6 @@ 
 /* { dg-require-effective-target int32plus } */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 #define type double
 
 type glob0, glob1;
diff --git a/gcc/testsuite/gcc.c-torture/compile/HIcmp.c b/gcc/testsuite/gcc.c-torture/compile/HIcmp.c
index 77b47886ed1..6e68271a009 100644
--- a/gcc/testsuite/gcc.c-torture/compile/HIcmp.c
+++ b/gcc/testsuite/gcc.c-torture/compile/HIcmp.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 #define type short
 
 type glob0, glob1;
diff --git a/gcc/testsuite/gcc.c-torture/compile/HIset.c b/gcc/testsuite/gcc.c-torture/compile/HIset.c
index 163cb7cbe32..a0d426c2c07 100644
--- a/gcc/testsuite/gcc.c-torture/compile/HIset.c
+++ b/gcc/testsuite/gcc.c-torture/compile/HIset.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 #define E0 ((type *)10000000)
 #define reg0 r0
 #define indreg0 (*p0)
diff --git a/gcc/testsuite/gcc.c-torture/compile/QIcmp.c b/gcc/testsuite/gcc.c-torture/compile/QIcmp.c
index c5161646f2c..a4dba2487e4 100644
--- a/gcc/testsuite/gcc.c-torture/compile/QIcmp.c
+++ b/gcc/testsuite/gcc.c-torture/compile/QIcmp.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 #define type signed char
 
 type glob0, glob1;
diff --git a/gcc/testsuite/gcc.c-torture/compile/QIset.c b/gcc/testsuite/gcc.c-torture/compile/QIset.c
index 212609dc864..e2fde2bda7e 100644
--- a/gcc/testsuite/gcc.c-torture/compile/QIset.c
+++ b/gcc/testsuite/gcc.c-torture/compile/QIset.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 #define E0 ((type *)10000000)
 #define reg0 r0
 #define indreg0 (*p0)
diff --git a/gcc/testsuite/gcc.c-torture/compile/SFset.c b/gcc/testsuite/gcc.c-torture/compile/SFset.c
index dc7f48dd2dd..a7efecf9717 100644
--- a/gcc/testsuite/gcc.c-torture/compile/SFset.c
+++ b/gcc/testsuite/gcc.c-torture/compile/SFset.c
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target int32plus } */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
 
 #define E0 ((type *)10000000)
 #define reg0 r0
diff --git a/gcc/testsuite/gcc.c-torture/compile/SIcmp.c b/gcc/testsuite/gcc.c-torture/compile/SIcmp.c
index 4a9e0d57fd7..ce1281b6093 100644
--- a/gcc/testsuite/gcc.c-torture/compile/SIcmp.c
+++ b/gcc/testsuite/gcc.c-torture/compile/SIcmp.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 #define type int
 
 type glob0, glob1;
diff --git a/gcc/testsuite/gcc.c-torture/compile/SIset.c b/gcc/testsuite/gcc.c-torture/compile/SIset.c
index 5fb93579f4b..b200a264b95 100644
--- a/gcc/testsuite/gcc.c-torture/compile/SIset.c
+++ b/gcc/testsuite/gcc.c-torture/compile/SIset.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 #define E0 ((type *)10000000)
 #define reg0 r0
 #define indreg0 (*p0)
diff --git a/gcc/testsuite/gcc.c-torture/compile/UHIcmp.c b/gcc/testsuite/gcc.c-torture/compile/UHIcmp.c
index 529e3a33fd3..b0029d23ea4 100644
--- a/gcc/testsuite/gcc.c-torture/compile/UHIcmp.c
+++ b/gcc/testsuite/gcc.c-torture/compile/UHIcmp.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 #define type unsigned short
 
 type glob0, glob1;
diff --git a/gcc/testsuite/gcc.c-torture/compile/UQIcmp.c b/gcc/testsuite/gcc.c-torture/compile/UQIcmp.c
index 3e9cdebc903..e28d13b03ab 100644
--- a/gcc/testsuite/gcc.c-torture/compile/UQIcmp.c
+++ b/gcc/testsuite/gcc.c-torture/compile/UQIcmp.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 #define type unsigned char
 
 type glob0, glob1;
diff --git a/gcc/testsuite/gcc.c-torture/compile/USIcmp.c b/gcc/testsuite/gcc.c-torture/compile/USIcmp.c
index 69788a45b2e..27e5503bd4d 100644
--- a/gcc/testsuite/gcc.c-torture/compile/USIcmp.c
+++ b/gcc/testsuite/gcc.c-torture/compile/USIcmp.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 #define type unsigned int
 
 type glob0, glob1;
diff --git a/gcc/testsuite/gcc.c-torture/compile/bcopy.c b/gcc/testsuite/gcc.c-torture/compile/bcopy.c
index 8108f296600..5225a2f9156 100644
--- a/gcc/testsuite/gcc.c-torture/compile/bcopy.c
+++ b/gcc/testsuite/gcc.c-torture/compile/bcopy.c
@@ -1,4 +1,5 @@ 
 /* { dg-add-options stack_size } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 void
 bcopy1 (s, d, c)
diff --git a/gcc/testsuite/gcc.c-torture/compile/callind.c b/gcc/testsuite/gcc.c-torture/compile/callind.c
index 5938d1b88fc..8a2004de2c0 100644
--- a/gcc/testsuite/gcc.c-torture/compile/callind.c
+++ b/gcc/testsuite/gcc.c-torture/compile/callind.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 bar (foo, a)
      int (**foo) ();
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/calls-void.c b/gcc/testsuite/gcc.c-torture/compile/calls-void.c
index eeed4fdfdc1..e086837ac97 100644
--- a/gcc/testsuite/gcc.c-torture/compile/calls-void.c
+++ b/gcc/testsuite/gcc.c-torture/compile/calls-void.c
@@ -1,5 +1,6 @@ 
 /* { dg-require-effective-target ptr32plus } */
 /* { dg-require-effective-target untyped_assembly } */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
 
 typedef void  (*T)(void);
 f1 ()
diff --git a/gcc/testsuite/gcc.c-torture/compile/calls.c b/gcc/testsuite/gcc.c-torture/compile/calls.c
index ca07122a786..a8084de0e5a 100644
--- a/gcc/testsuite/gcc.c-torture/compile/calls.c
+++ b/gcc/testsuite/gcc.c-torture/compile/calls.c
@@ -1,5 +1,6 @@ 
 /* { dg-require-effective-target ptr32plus } */
 /* { dg-require-effective-target untyped_assembly } */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
 
 typedef void  *(*T)(void);
 f1 ()
diff --git a/gcc/testsuite/gcc.c-torture/compile/consec.c b/gcc/testsuite/gcc.c-torture/compile/consec.c
index 01fa25b009b..b8c376d7076 100644
--- a/gcc/testsuite/gcc.c-torture/compile/consec.c
+++ b/gcc/testsuite/gcc.c-torture/compile/consec.c
@@ -1,4 +1,6 @@ 
 /* { dg-require-effective-target untyped_assembly } */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 int glob;
 
 conseq (a, b, c, d)
diff --git a/gcc/testsuite/gcc.c-torture/compile/limits-fndefn.c b/gcc/testsuite/gcc.c-torture/compile/limits-fndefn.c
index 0bd8f6af995..53204735493 100644
--- a/gcc/testsuite/gcc.c-torture/compile/limits-fndefn.c
+++ b/gcc/testsuite/gcc.c-torture/compile/limits-fndefn.c
@@ -1,5 +1,6 @@ 
 /* { dg-skip-if "too complex for avr" { avr-*-* } } */
 /* { dg-skip-if "ptxas times out" { nvptx-*-* } } */
+/* { dg-skip-if "no chance for bpf" { bpf-*-* } } */
 /* { dg-timeout-factor 4.0 } */
 #define LIM1(x) x##0, x##1, x##2, x##3, x##4, x##5, x##6, x##7, x##8, x##9,
 #define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \
diff --git a/gcc/testsuite/gcc.c-torture/compile/lll.c b/gcc/testsuite/gcc.c-torture/compile/lll.c
index dee9dc37d15..ea09c871c6b 100644
--- a/gcc/testsuite/gcc.c-torture/compile/lll.c
+++ b/gcc/testsuite/gcc.c-torture/compile/lll.c
@@ -1,3 +1,4 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
 
 byte_match_count2 (buf, n, xm, m1, m2, m3, m4)
      unsigned *buf;
diff --git a/gcc/testsuite/gcc.c-torture/compile/parms.c b/gcc/testsuite/gcc.c-torture/compile/parms.c
index 8205a9c1454..1bfc93d2abb 100644
--- a/gcc/testsuite/gcc.c-torture/compile/parms.c
+++ b/gcc/testsuite/gcc.c-torture/compile/parms.c
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target alloca } */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
 #define alloca __builtin_alloca
 
 x (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, x, y)
diff --git a/gcc/testsuite/gcc.c-torture/compile/pass.c b/gcc/testsuite/gcc.c-torture/compile/pass.c
index 4e028393feb..529a01dac85 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pass.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pass.c
@@ -1,4 +1,6 @@ 
 /* { dg-require-effective-target untyped_assembly } */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 int
 foo (a, b, c)
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/poor.c b/gcc/testsuite/gcc.c-torture/compile/poor.c
index 66d584aff43..20287ef2354 100644
--- a/gcc/testsuite/gcc.c-torture/compile/poor.c
+++ b/gcc/testsuite/gcc.c-torture/compile/poor.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 typedef struct
 {
 	char	c[510];
diff --git a/gcc/testsuite/gcc.c-torture/compile/pp.c b/gcc/testsuite/gcc.c-torture/compile/pp.c
index 7d38d53de0f..c1e09eab407 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pp.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pp.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 foo (a, b, c, d, e, i0, f, i1)
      double a, b, c, d, e, f;
      int i0, i1;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr21840.c b/gcc/testsuite/gcc.c-torture/compile/pr21840.c
index bec3d6bf5d7..af47fa5c0e0 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr21840.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr21840.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 void fn_show_state(void);
 typedef void (*fn_handler_fn)(void);
 static fn_handler_fn fn_handler[1];
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr23929.c b/gcc/testsuite/gcc.c-torture/compile/pr23929.c
index 210bb585e06..d63eb71e7bd 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr23929.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr23929.c
@@ -1,4 +1,5 @@ 
 /* PR tree-optimization/23929 */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 extern void bar (char *);
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr25310.c b/gcc/testsuite/gcc.c-torture/compile/pr25310.c
index 54695e05b4f..674745f80ec 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr25310.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr25310.c
@@ -1,4 +1,5 @@ 
 /* { dg-skip-if "Array too big" { "pdp11-*-*" } { "-mint32" } } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 /* Prevent spurious test failures on 16-bit targets.  */
 #if __INT_MAX__ >= 2147483647L
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr25311.c b/gcc/testsuite/gcc.c-torture/compile/pr25311.c
index 26c5bc37b83..43ef3fd9523 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr25311.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr25311.c
@@ -1,3 +1,4 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 struct w
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr32139.c b/gcc/testsuite/gcc.c-torture/compile/pr32139.c
index 7b8522f5174..8b13cb9665a 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr32139.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr32139.c
@@ -1,4 +1,6 @@ 
 /* PR tree-optimization/32139 */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 int foo (void);
 int bar (void) __attribute__ ((const));
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr32399.c b/gcc/testsuite/gcc.c-torture/compile/pr32399.c
index cc2b1b18984..b29dbd7986a 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr32399.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr32399.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 void f(unsigned char *src, unsigned char *dst, int num, unsigned char *pos, unsigned char *diffuse, int hasdiffuse, unsigned char *specular, int hasspecular) {
     int i;
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr34091.c b/gcc/testsuite/gcc.c-torture/compile/pr34091.c
index 0b8549132e6..a623a383fd0 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr34091.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr34091.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 typedef unsigned int GLenum;
 typedef unsigned char GLboolean;
 typedef int GLint;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr34458.c b/gcc/testsuite/gcc.c-torture/compile/pr34458.c
index 096cc0c9b89..09febbea31f 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr34458.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr34458.c
@@ -1,4 +1,5 @@ 
 /* Testcase by Martin Michlmayr <tbm@cyrius.com> */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 typedef struct
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr34688.c b/gcc/testsuite/gcc.c-torture/compile/pr34688.c
index 60e0f3c9f15..ec890cb8f15 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr34688.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr34688.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 typedef __SIZE_TYPE__ size_t;
          typedef struct {
         }
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr35607.c b/gcc/testsuite/gcc.c-torture/compile/pr35607.c
index 7f5aa7a2b7c..9dc1b5c4b90 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr35607.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr35607.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 extern void (*__fini_array_start []) (void);
 extern void (*__fini_array_end []) (void);
 void
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr37258.c b/gcc/testsuite/gcc.c-torture/compile/pr37258.c
index 286f2fc4427..41801781e3a 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr37258.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr37258.c
@@ -1,4 +1,6 @@ 
 /* { dg-require-effective-target untyped_assembly } */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 typedef signed char int8_t;
 typedef short int int16_t;
 typedef int int32_t;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr37327.c b/gcc/testsuite/gcc.c-torture/compile/pr37327.c
index 79946b7522d..5ca9d1d45b6 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr37327.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr37327.c
@@ -1,4 +1,6 @@ 
 /* { dg-require-effective-target untyped_assembly } */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 typedef signed char int8_t;
 typedef short int int16_t;
 typedef int int32_t;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr37381.c b/gcc/testsuite/gcc.c-torture/compile/pr37381.c
index a2fed66c4ee..d8cd47d329d 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr37381.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr37381.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 extern unsigned int __invalid_size_argument_for_IOC;
 typedef unsigned int __u32;
 struct video_window
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr37433-1.c b/gcc/testsuite/gcc.c-torture/compile/pr37433-1.c
index 322c167d682..a067c19182b 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr37433-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr37433-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 void regex_subst(void)
 {
   const void *subst = "";
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr37433.c b/gcc/testsuite/gcc.c-torture/compile/pr37433.c
index 0ba1179886c..7237f38b6f2 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr37433.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr37433.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 int regex_subst(void)
 {
   const void *subst = "";
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr37669-2.c b/gcc/testsuite/gcc.c-torture/compile/pr37669-2.c
index abeae7a2f32..2170dda67f0 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr37669-2.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr37669-2.c
@@ -1,4 +1,5 @@ 
 /* PR middle-end/37669 */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
 
 #define FMT10 "%d%d%d%d%d%d%d%d%d%d"
 #define FMT100 FMT10 FMT10 FMT10 FMT10 FMT10 FMT10 FMT10 FMT10 FMT10 FMT10
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr37669.c b/gcc/testsuite/gcc.c-torture/compile/pr37669.c
index a2eafc75cb3..36e4c39d8ed 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr37669.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr37669.c
@@ -1,6 +1,7 @@ 
 /* This testcase used to fail because a miscompiled execute_fold_all_builtins. */
 /* { dg-options "-fgnu89-inline" } */
 /* { dg-require-effective-target int32plus } */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
 
 typedef __SIZE_TYPE__ size_t;
 extern __inline __attribute__ ((__always_inline__)) int __attribute__
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr37742-3.c b/gcc/testsuite/gcc.c-torture/compile/pr37742-3.c
index 541bd42ad5d..9e7b10fb7a3 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr37742-3.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr37742-3.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 void matmul_i4 (int * __restrict dest_y,
 		const int * __restrict abase,
 		const int * __restrict bbase_y,
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr39937.c b/gcc/testsuite/gcc.c-torture/compile/pr39937.c
index d0231053258..35a5e64b05f 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr39937.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr39937.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 int foo (__const char *__restrict __s);
 static void 
 read_anisou(char line[])
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr39941.c b/gcc/testsuite/gcc.c-torture/compile/pr39941.c
index b6209086be9..8a3156f77c8 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr39941.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr39941.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 typedef void (*entry_func) (void) __attribute__ ((noreturn));
 extern entry_func entry_addr;
 static void bsd_boot_entry (void)
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr40080.c b/gcc/testsuite/gcc.c-torture/compile/pr40080.c
index e36f14273e8..d7dd1d0f47a 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr40080.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr40080.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 extern void *ff(void*,int);
 
 struct lpgl { struct lpgl *next; };
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr41181.c b/gcc/testsuite/gcc.c-torture/compile/pr41181.c
index f866249b605..410309c89ee 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr41181.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr41181.c
@@ -1,5 +1,7 @@ 
 /* { dg-require-effective-target ptr32plus } */
 /* { dg-skip-if "The array is too big" { "avr-*-*" "pdp11-*-*" } } */ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 char paths[1024];
 static void x264_slicetype_path(char (*best_paths)[250], int n, int length)
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr41634.c b/gcc/testsuite/gcc.c-torture/compile/pr41634.c
index 976e463e2ba..e6f653c0395 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr41634.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr41634.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 extern int _xgetw();
 extern int foo(char*);
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr43415.c b/gcc/testsuite/gcc.c-torture/compile/pr43415.c
index c00e1c41ce9..a11ac30ad84 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr43415.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr43415.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 int main()                                                                      
 {                                                                               
   unsigned long long table[256];                                          
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr43417.c b/gcc/testsuite/gcc.c-torture/compile/pr43417.c
index 45bf053a0cb..061cc2951bf 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr43417.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr43417.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 int pid_count = 0;
 
 unsigned int getopt (int, const char**, const char*);
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr43635.c b/gcc/testsuite/gcc.c-torture/compile/pr43635.c
index df826b6f4c0..4862e5da81e 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr43635.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr43635.c
@@ -1,4 +1,6 @@ 
 /* { dg-require-effective-target untyped_assembly } */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 extern void d (void);
 
 void (*foo (void)) (float)
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr43791.c b/gcc/testsuite/gcc.c-torture/compile/pr43791.c
index 2b1d06ff789..68202859a52 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr43791.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr43791.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 int owner();
 int clear();
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr43845.c b/gcc/testsuite/gcc.c-torture/compile/pr43845.c
index bdb45e7d2a8..8c7541f2a37 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr43845.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr43845.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 typedef int __attribute__ ((const)) (*x264_pixel_cmp_t)(void);
 
 typedef struct {
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr44043.c b/gcc/testsuite/gcc.c-torture/compile/pr44043.c
index 943501b4091..ed8806be4f2 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr44043.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr44043.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 typedef unsigned char __u8;
 typedef unsigned short __u16;
 typedef unsigned int __u32;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr44063.c b/gcc/testsuite/gcc.c-torture/compile/pr44063.c
index 596e1dc991f..32208f610f9 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr44063.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr44063.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 typedef signed char int8_t;
 typedef short int16_t;
 typedef unsigned char uint8_t;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr44788.c b/gcc/testsuite/gcc.c-torture/compile/pr44788.c
index 99dc7982394..6e7e153ee95 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr44788.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr44788.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 void joint_decode(float* mlt_buffer1, int t) {
     int i;
     float decode_buffer[1060];
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr48596.c b/gcc/testsuite/gcc.c-torture/compile/pr48596.c
index 382a152413e..743bd82e868 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr48596.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr48596.c
@@ -1,4 +1,6 @@ 
 /* PR target/48596  */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 enum { nrrdCenterUnknown, nrrdCenterNode, nrrdCenterCell, nrrdCenterLast };
 typedef struct { int size; int center; }  NrrdAxis;
 typedef struct { int dim; NrrdAxis axis[10]; } Nrrd;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr51694.c b/gcc/testsuite/gcc.c-torture/compile/pr51694.c
index f5c1a40df86..66b6acff617 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr51694.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr51694.c
@@ -1,4 +1,6 @@ 
 /* { dg-require-effective-target untyped_assembly } */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 void
 foo (x, fn)
   void (*fn) ();
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr51856.c b/gcc/testsuite/gcc.c-torture/compile/pr51856.c
index 6644c7fdc14..823a0bed073 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr51856.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr51856.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 struct B { int b1; long long b2, b3; int b4; };
 struct C { char c1[40], c2, c3[96]; long long c4[5], c5; char c6[596]; };
 void fn1 (long long), fn2 (char *, int), fn4 (void);
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr52750.c b/gcc/testsuite/gcc.c-torture/compile/pr52750.c
index 36391bac5d9..78d48a92547 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr52750.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr52750.c
@@ -1,4 +1,5 @@ 
 /* PR middle-end/52750 */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 typedef signed char V __attribute__((vector_size (32)));
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr54713-1.c b/gcc/testsuite/gcc.c-torture/compile/pr54713-1.c
index f042ea2fc6c..0d4172a576b 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr54713-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr54713-1.c
@@ -1,4 +1,5 @@ 
 /* PR tree-optimization/54713 */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 #ifndef N
 #define N 8
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr54713-2.c b/gcc/testsuite/gcc.c-torture/compile/pr54713-2.c
index c3910373111..f7d2364e197 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr54713-2.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr54713-2.c
@@ -1,4 +1,5 @@ 
 /* PR tree-optimization/54713 */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 #define N 16
 #define ONE 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr54713-3.c b/gcc/testsuite/gcc.c-torture/compile/pr54713-3.c
index 6164a5eec0e..76a35b067c5 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr54713-3.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr54713-3.c
@@ -1,4 +1,5 @@ 
 /* PR tree-optimization/54713 */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 #define N 32
 #define ONE 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr55921.c b/gcc/testsuite/gcc.c-torture/compile/pr55921.c
index de0635d66ad..cf9084e33f0 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr55921.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr55921.c
@@ -1,5 +1,6 @@ 
 /* PR tree-optimization/55921 */
 /* { dg-skip-if "Not enough registers" { "pdp11-*-*" } } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 typedef union
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr70240.c b/gcc/testsuite/gcc.c-torture/compile/pr70240.c
index 830d4ddcc93..466d3a7c961 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr70240.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr70240.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 typedef short v16hi __attribute__ ((vector_size (32)));
 typedef int v8si __attribute__ ((vector_size (32)));
 typedef long long v4di __attribute__ ((vector_size (32)));
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr70355.c b/gcc/testsuite/gcc.c-torture/compile/pr70355.c
index 474942715f8..f7114208005 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr70355.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr70355.c
@@ -1,5 +1,7 @@ 
 /* { dg-require-effective-target int128 } */
 /* { dg-additional-options "-g" } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 
 typedef unsigned __int128 v2ti __attribute__ ((vector_size (32)));
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr77754-2.c b/gcc/testsuite/gcc.c-torture/compile/pr77754-2.c
index d088961963d..2c9a409cdae 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr77754-2.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr77754-2.c
@@ -1,5 +1,6 @@ 
 // { dg-require-effective-target alloca }
 /* PR c/77754 */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
 
 int fn3();
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr77754-3.c b/gcc/testsuite/gcc.c-torture/compile/pr77754-3.c
index fb25e234fe2..4af1ffac22b 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr77754-3.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr77754-3.c
@@ -1,5 +1,6 @@ 
 // { dg-require-effective-target alloca }
 /* PR c/77754 */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
 
 int fn3();
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr77754-4.c b/gcc/testsuite/gcc.c-torture/compile/pr77754-4.c
index 1c5c4619a33..874c28dc0f0 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr77754-4.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr77754-4.c
@@ -1,5 +1,6 @@ 
 // { dg-require-effective-target alloca }
 /* PR c/77754 */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
 
 int fn3();
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr82052.c b/gcc/testsuite/gcc.c-torture/compile/pr82052.c
index 3763161e350..09fac5edb1e 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr82052.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr82052.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 typedef unsigned char uint8_t;
 typedef unsigned short uint16_t;
 typedef unsigned uint32_t;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr83487.c b/gcc/testsuite/gcc.c-torture/compile/pr83487.c
index 9effb1eef03..9de0e17939f 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr83487.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr83487.c
@@ -1,4 +1,5 @@ 
 /* PR middle-end/83487 */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
 
 struct __attribute__ ((aligned)) A {};
 struct A a;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr86122.c b/gcc/testsuite/gcc.c-torture/compile/pr86122.c
index 0a4fd144ae6..1bd46733183 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr86122.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr86122.c
@@ -1,4 +1,5 @@ 
 /* PR middle-end/86122 */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 _Complex int
 foo (_Complex int x)
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr89280.c b/gcc/testsuite/gcc.c-torture/compile/pr89280.c
index 15b6e7051f8..64ca7028894 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr89280.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr89280.c
@@ -1,6 +1,7 @@ 
 // { dg-require-effective-target nonlocal_goto }
 // { dg-require-effective-target label_values }
 /* PR tree-optimization/89280 */
+/* { dg-skip-if "no support for indirect jumps" { bpf-*-* } } */
 
 int a;
 void foo (void);
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr89663-2.c b/gcc/testsuite/gcc.c-torture/compile/pr89663-2.c
index 052fe69f40e..94193203738 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr89663-2.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr89663-2.c
@@ -1,4 +1,5 @@ 
 /* PR middle-end/89663 */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
 
 int irint (double);
 long lrint (double);
diff --git a/gcc/testsuite/gcc.c-torture/compile/pret-arg.c b/gcc/testsuite/gcc.c-torture/compile/pret-arg.c
index a7fa8562830..d86d135dc4b 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pret-arg.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pret-arg.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 foo (a, b, c, d, e, f, g, h, i, j, xx)
      double xx;
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/pta-1.c b/gcc/testsuite/gcc.c-torture/compile/pta-1.c
index 515e5ff13f4..38c60cdda2d 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pta-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pta-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
+
 typedef struct JSObject JSObject;
 typedef struct JSObjectMap *(*JSNewObjectMapOp) (JSObject *obj);
 typedef JSObject *(*JSGetMethodOp) (JSObject *obj);
diff --git a/gcc/testsuite/gcc.c-torture/compile/regs-arg-size.c b/gcc/testsuite/gcc.c-torture/compile/regs-arg-size.c
index f5f01116eda..77518866d3f 100644
--- a/gcc/testsuite/gcc.c-torture/compile/regs-arg-size.c
+++ b/gcc/testsuite/gcc.c-torture/compile/regs-arg-size.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
+
 int foo;
 typedef long unsigned int size_t;
 typedef short unsigned int wchar_t;
diff --git a/gcc/testsuite/gcc.c-torture/compile/sound.c b/gcc/testsuite/gcc.c-torture/compile/sound.c
index be727e3febb..781ad4a3087 100644
--- a/gcc/testsuite/gcc.c-torture/compile/sound.c
+++ b/gcc/testsuite/gcc.c-torture/compile/sound.c
@@ -1,3 +1,4 @@ 
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 main ()
 {
diff --git a/gcc/testsuite/gcc.c-torture/compile/stack-check-1.c b/gcc/testsuite/gcc.c-torture/compile/stack-check-1.c
index 2a03f7c29ae..6bb079e7fd2 100644
--- a/gcc/testsuite/gcc.c-torture/compile/stack-check-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/stack-check-1.c
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target untyped_assembly } */
 /* { dg-require-stack-check "" } */
 /* { dg-additional-options "-fstack-check" } */
+/* { dg-skip-if "no support for indirect calls" { bpf-*-* } } */
 #include "20031023-1.c"
diff --git a/gcc/testsuite/gcc.c-torture/compile/structret.c b/gcc/testsuite/gcc.c-torture/compile/structret.c
index 9c705d4c0a2..d99eaa630bb 100644
--- a/gcc/testsuite/gcc.c-torture/compile/structret.c
+++ b/gcc/testsuite/gcc.c-torture/compile/structret.c
@@ -1,3 +1,5 @@ 
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 struct foo
 {
   int a, b, c, d;
diff --git a/gcc/testsuite/gcc.c-torture/compile/uuarg.c b/gcc/testsuite/gcc.c-torture/compile/uuarg.c
index 930dd8ab5f6..875c7c3b50f 100644
--- a/gcc/testsuite/gcc.c-torture/compile/uuarg.c
+++ b/gcc/testsuite/gcc.c-torture/compile/uuarg.c
@@ -1,4 +1,6 @@ 
 /* { dg-require-effective-target untyped_assembly } */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
+
 foo (a, b, c, d, e, f, g, h, i)
 {
   return foo () + i;
diff --git a/gcc/testsuite/gcc.dg/20001009-1.c b/gcc/testsuite/gcc.dg/20001009-1.c
index 1a5567779b5..580e4b4d307 100644
--- a/gcc/testsuite/gcc.dg/20001009-1.c
+++ b/gcc/testsuite/gcc.dg/20001009-1.c
@@ -1,5 +1,6 @@ 
 /* { dg-do compile { target fpic } } */
 /* { dg-options "-O2 -fpic" } */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
 
 extern void foo (void *a, double x, double y);
 void
diff --git a/gcc/testsuite/gcc.dg/20020418-1.c b/gcc/testsuite/gcc.dg/20020418-1.c
index 7314ec000ef..456967fdd36 100644
--- a/gcc/testsuite/gcc.dg/20020418-1.c
+++ b/gcc/testsuite/gcc.dg/20020418-1.c
@@ -2,6 +2,7 @@ 
 /* { dg-do compile } */
 /* { dg-options "-O2" } */
 /* { dg-options "-O2 -msse -ffast-math" { target i?86-*-* x86_64-*-* } } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 void bar (float *a, float *b);
 
diff --git a/gcc/testsuite/gcc.dg/20020426-2.c b/gcc/testsuite/gcc.dg/20020426-2.c
index 9ad7a54f601..96517f7b840 100644
--- a/gcc/testsuite/gcc.dg/20020426-2.c
+++ b/gcc/testsuite/gcc.dg/20020426-2.c
@@ -3,6 +3,7 @@ 
 /* { dg-do run } */
 /* { dg-options "-O2" } */
 /* { dg-options "-O2 -frename-registers -fomit-frame-pointer -fPIC -mtune=i686" { target { { i?86-*-* x86_64-*-* } && { ia32 && fpic } } } } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 extern void exit (int);
 
diff --git a/gcc/testsuite/gcc.dg/20020430-1.c b/gcc/testsuite/gcc.dg/20020430-1.c
index 63915a24b17..f48bb672aaf 100644
--- a/gcc/testsuite/gcc.dg/20020430-1.c
+++ b/gcc/testsuite/gcc.dg/20020430-1.c
@@ -6,6 +6,7 @@ 
 
 /* { dg-do compile { target fpic } } */
 /* { dg-options "-O2 -frename-registers -fpic" } */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
 
 typedef unsigned long XID;
 typedef XID Window;
diff --git a/gcc/testsuite/gcc.dg/20040306-1.c b/gcc/testsuite/gcc.dg/20040306-1.c
index 903d20ac256..8cac8697d99 100644
--- a/gcc/testsuite/gcc.dg/20040306-1.c
+++ b/gcc/testsuite/gcc.dg/20040306-1.c
@@ -2,7 +2,7 @@ 
 
 /* { dg-do compile } */
 /* { dg-options "-O2" } */
-
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
 
 typedef struct test
 {
diff --git a/gcc/testsuite/gcc.dg/20040622-2.c b/gcc/testsuite/gcc.dg/20040622-2.c
index 0be320fa4e2..e62ec36d43a 100644
--- a/gcc/testsuite/gcc.dg/20040622-2.c
+++ b/gcc/testsuite/gcc.dg/20040622-2.c
@@ -1,5 +1,6 @@ 
 /* { dg-do link } */
 /* { dg-require-effective-target ptr32plus } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 /* This validates codegen for [r1+32760] on Darwin. */
 void f(char x[32688], double *y, double *z) __attribute__((noinline));
 void f(char x[32688], double *y, double *z) {}
diff --git a/gcc/testsuite/gcc.dg/20050603-2.c b/gcc/testsuite/gcc.dg/20050603-2.c
index 8c8e58e1b4d..a135e3ea1a0 100644
--- a/gcc/testsuite/gcc.dg/20050603-2.c
+++ b/gcc/testsuite/gcc.dg/20050603-2.c
@@ -1,5 +1,6 @@ 
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "no stdlib.h in eBPF" { bpf-*-* } } */
 #include <stdlib.h>
 struct s {
   unsigned short f: 16;
diff --git a/gcc/testsuite/gcc.dg/20050629-1.c b/gcc/testsuite/gcc.dg/20050629-1.c
index 0dd47f7024b..99d9ce823b0 100644
--- a/gcc/testsuite/gcc.dg/20050629-1.c
+++ b/gcc/testsuite/gcc.dg/20050629-1.c
@@ -1,5 +1,6 @@ 
 /* { dg-do compile } */
 /* { dg-options "-O2 -w" } */
+/* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
 
 /* This file was automatically reduced from tree-ssa-operands.c.  It
    contains many warnings, but it exposes a copy propagation bug that
diff --git a/gcc/testsuite/gcc.dg/20061026.c b/gcc/testsuite/gcc.dg/20061026.c
index 741ea2eb3b8..fa8069ce4cf 100644
--- a/gcc/testsuite/gcc.dg/20061026.c
+++ b/gcc/testsuite/gcc.dg/20061026.c
@@ -1,5 +1,6 @@ 
 /* { dg-do compile } */
 /* { dg-options "-O1" } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 /* This testcase failed on s390.  The frame size for function f will be
    exactly 32768 bytes.  The back end has to recognize that this is to
diff --git a/gcc/testsuite/gcc.dg/Walloc-size-larger-than-18.c b/gcc/testsuite/gcc.dg/Walloc-size-larger-than-18.c
index b4aa167f655..838a4935b0b 100644
--- a/gcc/testsuite/gcc.dg/Walloc-size-larger-than-18.c
+++ b/gcc/testsuite/gcc.dg/Walloc-size-larger-than-18.c
@@ -4,6 +4,7 @@ 
    with zero or excessive size trigger either -Walloc-zero or
    -Walloc-size-larger-than warnings.
    { dg-do compile }
+   { dg-skip-if "no support for indirect calls" { bpf-*-* } }
    { dg-options "-O2 -Wall -Walloc-zero -ftrack-macro-expansion=0" } */
 
 #define ATTR(...) __attribute__ ((__VA_ARGS__))
diff --git a/gcc/testsuite/gcc.dg/Warray-bounds-3.c b/gcc/testsuite/gcc.dg/Warray-bounds-3.c
index 773f4633dc7..f119502f025 100644
--- a/gcc/testsuite/gcc.dg/Warray-bounds-3.c
+++ b/gcc/testsuite/gcc.dg/Warray-bounds-3.c
@@ -1,5 +1,6 @@ 
 /* { dg-do compile } */
 /* { dg-options "-O2 -Warray-bounds" } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 /* based on PR 31227 */
 
 typedef __SIZE_TYPE__ size_t;
diff --git a/gcc/testsuite/gcc.dg/Warray-bounds-30.c b/gcc/testsuite/gcc.dg/Warray-bounds-30.c
index ac7e9a6e8fb..b9965682101 100644
--- a/gcc/testsuite/gcc.dg/Warray-bounds-30.c
+++ b/gcc/testsuite/gcc.dg/Warray-bounds-30.c
@@ -1,7 +1,8 @@ 
 /* PR tree-optimization/84047 - missing -Warray-bounds on an out-of-bounds
    index into an array
    { dg-do compile }
-   { dg-options "-O2 -Warray-bounds=2 -ftrack-macro-expansion=0" } */
+   { dg-options "-O2 -Warray-bounds=2 -ftrack-macro-expansion=0" }
+   { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
 
 #include "range.h"
 
diff --git a/gcc/testsuite/gcc.dg/Wframe-larger-than-2.c b/gcc/testsuite/gcc.dg/Wframe-larger-than-2.c
index 1a5402f8120..d7068d04aef 100644
--- a/gcc/testsuite/gcc.dg/Wframe-larger-than-2.c
+++ b/gcc/testsuite/gcc.dg/Wframe-larger-than-2.c
@@ -1,6 +1,7 @@ 
 /* Exercise -Wframe-larger-than= with a byte-size suffix.
    { dg-do compile }
-   { dg-options "-O -Wframe-larger-than=1KB" } */
+   { dg-options "-O -Wframe-larger-than=1KB" }
+   { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 extern void f (void*, ...);
 
diff --git a/gcc/testsuite/gcc.dg/Wframe-larger-than.c b/gcc/testsuite/gcc.dg/Wframe-larger-than.c
index fab0adf37ee..8a40cf36df8 100644
--- a/gcc/testsuite/gcc.dg/Wframe-larger-than.c
+++ b/gcc/testsuite/gcc.dg/Wframe-larger-than.c
@@ -4,6 +4,7 @@ 
 
 /* { dg-do compile } */
 /* { dg-options "-Wframe-larger-than=2048" } */
+/* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
 
 extern void func(char *);
 
diff --git a/gcc/testsuite/gcc.dg/Wrestrict-11.c b/gcc/testsuite/gcc.dg/Wrestrict-11.c
index 7b4b5aa2527..07b9cddad4b 100644
--- a/gcc/testsuite/gcc.dg/Wrestrict-11.c
+++ b/gcc/testsuite/gcc.dg/Wrestrict-11.c
@@ -3,7 +3,8 @@ 
    that calls to strncpy involving multidimensional arrays of structs don't
    trigger false positive -Wrestrict warnings.
    { dg-do compile }
-   { dg-options "-O2 -Wrestrict -ftrack-macro-expansion=0" } */
+   { dg-options "-O2 -Wrestrict -ftrack-macro-expansion=0" }
+   { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
 
 typedef __SIZE_TYPE__ size_t;
 
diff --git a/gcc/testsuite/gcc.dg/builtins-config.h b/gcc/testsuite/gcc.dg/builtins-config.h
index f00e91a750f..5e27c1deb33 100644
--- a/gcc/testsuite/gcc.dg/builtins-config.h
+++ b/gcc/testsuite/gcc.dg/builtins-config.h
@@ -1,4 +1,4 @@ 
-/* Copyright (C) 2003, 2004, 2005, 2006, 2009, 2011, 2012
+/* Copyright (C) 2003, 2004, 2005, 2006, 2009, 2011, 2012, 2019
    Free Software Foundation.
 
    Define macros useful in tests for bulitin functions.  */
@@ -20,6 +20,8 @@ 
 /* FreeBSD up to version 8 lacks support for cexp and friends.  */
 #elif defined(__vxworks)
 /* VxWorks doesn't have a full C99 time.  (cabs is missing, for example.)  */
+#elif defined (__BPF__)
+/* No chance for eBPF to support C99 functions.  */
 #elif defined(_WIN32) && !defined(__CYGWIN__)
 /* Windows doesn't have the entire C99 runtime.  */
 #elif (defined(__APPLE__) && defined(__ppc__) \