99 Commits

Author SHA1 Message Date
Matthew Barr
b1c57f9f54 cmake: check for libc++ directly
Rather than trying to infer libc++ use from platform and compiler, just
look for a defined symbol.
2017-04-26 15:19:52 +10:00
Justin Viiret
1ef87c43ee noncopyable: switch over from boost 2017-04-26 15:18:26 +10:00
Justin Viiret
a61b92f8d1 operators: add simple ue2::totally_ordered class 2017-04-26 15:18:26 +10:00
Justin Viiret
5dfae12a62 ng: split NGWrapper into NGHolder, ExpressionInfo
We now use NGHolder for all graph information, while other expression
properties (report, flag information, etc) go in new class
ExpressionInfo.
2017-04-26 15:18:09 +10:00
Matthew Barr
ce50ff6119 Use GNUInstallDirs for install paths 2017-04-26 15:17:19 +10:00
Matthew Barr
5daa191313 cmake: simplify g++ version check 2017-04-26 15:17:19 +10:00
Matthew Barr
11aac07855 cmake: override gcc's tuning guess 2017-04-26 15:17:19 +10:00
Matthew Barr
b68e4ea336 cmake: move boost tests 2017-04-26 15:17:19 +10:00
Matthew Barr
287f519205 cmake: look for Boost in-tree first
During development we tend to use a symlink to the most recent version of
Boost from the Hyperscan source tree, so look there first.

Also, unset some cached results so we recheck when the Boost version changes.
2017-04-26 15:17:19 +10:00
Justin Viiret
187a4b82c2 small_vector: add header to handle older Boost
This provides ue2::small_vector<T, N, Alloc> which will fall back to
std::vector<T, Alloc> where the Boost version is too old or not present.
2017-04-26 15:17:11 +10:00
Matthew Barr
79308e6791 cmake: don't build static libs if we don't have to 2017-04-26 15:17:03 +10:00
Anatoly Burakov
2de6706df2 Adding support for compiling approximate matching patterns
Adds new "edit_distance" extparam
2017-04-26 15:11:39 +10:00
Alex Coyte
fddcdbb129 determinisation: use unordered_map to hold state set -> id mapping 2017-04-26 14:59:22 +10:00
Matthew Barr
9363ae7486 Clear upper half of AVX register before libm call
Clearing the upper half of the AVX register is required before calling SSE
code to avoid AVX-to-SSE transition penalties.
2017-04-26 14:59:22 +10:00
Justin Viiret
1875d55cf1 parser: add initial parser for control verbs
This more reliably handles control verbs like (*UTF8) that can only
happen at the start of the pattern, and allows them in any ordering.
2017-04-26 14:57:46 +10:00
Justin Viiret
c6bf1919d0 rose: merge all dump code into rose_build_dump.cpp 2017-04-26 14:49:35 +10:00
Alex Coyte
c32d7d51d9 remove ng_rose 2017-04-26 14:44:49 +10:00
Justin Viiret
2fda8c0b20 hwlm: move accel from hwlm build to rose 2017-04-26 14:41:29 +10:00
Matthew Barr
f7d3ccc7e5 Bump version number for release 2017-03-01 13:05:44 +11:00
Matthew Barr
53a8d97e77 Bump version number for release 2017-01-20 14:15:53 +11:00
Matthew Barr
8c2e033540 cmake: test reverse_graph instead of using version
It seems that some distros are using a patched Boost 1.62.0 which means our
workaround in reverse_graph has a conflict. Add a CMake test to see if we
need to use the patched reverse_graph.
2017-01-20 09:26:34 +11:00
Matthew Barr
e23316f453 Boost 1.61 required for clang/libc++
The libc++ headers aren't specific enough and causes the compiler to think
there are ambiguous functions when using older Boost versions.
2017-01-17 11:38:31 +11:00
Matthew Barr
1c9f38e98d Silence ABI notes in release builds 2017-01-17 11:38:16 +11:00
Matthew Barr
2f57681bb6 cmake: check the generator for fat runtime builds
The RULE_LAUNCH_COMPILE property only works for Unix Makefiles, or
for Ninja with CMake newer than v3.0.
2016-12-14 15:35:44 +11:00
Matthew Barr
0d87116d33 cmake: check clang version for fat runtime support 2016-12-14 15:35:44 +11:00
Matthew Barr
f29b203a86 cmake: combine hs_exec src lists correctly 2016-12-14 15:35:28 +11:00
Matthew Barr
1ed2bdc46f Don't set flags for common files 2016-12-14 15:35:22 +11:00
Matthew Barr
c337ac665b cmake: default to fat runtime for release builds 2016-12-14 15:35:19 +11:00
Matthew Barr
6967c7ddf1 cmake: unneeded header check 2016-12-14 15:35:16 +11:00
Matthew Barr
0d0e1a5106 api: hs_valid_platform 2016-12-14 15:35:13 +11:00
Matthew Barr
c3a73446ee Fat runtime 2016-12-14 15:34:54 +11:00
Matthew Barr
2214296b7f Convert compile-time code to not require SIMD 2016-12-14 15:29:01 +11:00
Justin Viiret
e271781d95 multibit, fatbit: make _size build-time only
This commit makes mmbit_size() and fatbit_size compile-time only, and
adds a resource limit for very large multibits.
2016-12-14 15:28:54 +11:00
Alex Coyte
e51b6d23b9 introduce Sheng-McClellan hybrid 2016-12-14 15:27:18 +11:00
Alex Coyte
32c826e9c6 have single dump function per engine 2016-12-02 11:32:36 +11:00
Alex Coyte
e1e9010cac Introduce custom adjacency-list based graph 2016-12-02 11:31:33 +11:00
Matthew Barr
be8bd41ec4 Merge master into develop 2016-12-02 11:21:29 +11:00
Matthew Barr
0a16e6f78c Bump version number for release 2016-11-15 10:09:59 +11:00
Justin Viiret
68bf473e2e fdr: move long literal handling into Rose
Move the hash table used for long literal support in streaming mode from
FDR to Rose, and introduce new instructions CHECK_LONG_LIT and
CHECK_LONG_LIT_NOCASE for doing literal confirm for long literals.

This simplifies FDR confirm, and guarantees that HWLM matchers will only
be used for literals < 256 bytes long.
2016-10-28 14:52:26 +11:00
Matthew Barr
6ed30194ce Disable asserts everywhere when we say so 2016-10-28 14:52:15 +11:00
Matthew Barr
2e5a2ab2a9 cmake: don't be so heavyhanded with flags 2016-10-28 14:47:11 +11:00
Xu, Chi
04d79629de rose: add shufti-based lookaround instructions
More lookaround specialisations that use the shufti approach.
2016-10-28 14:46:27 +11:00
Justin Viiret
13b6023a18 hash: add hash_all variadic tpl func, use in rose 2016-10-28 14:45:28 +11:00
Justin Viiret
13af3bfb74 rose: decouple build-time program representation
This commit replaces the build-time representation of the Rose
interpreter programs, from a class containing a discriminated union of
the bytecode structures to a class hierarchy of build-time prototypes.

This makes it easier to reason about and manipulate Rose programs during
compilation.
2016-10-28 14:45:15 +11:00
Alex Coyte
a08e1dd690 Introduce a 64-bit LimEx model.
On 64-bit platforms, the Limex 64 model is implemented in normal GPRs.
On 32-bit platforms, however, 128-bit SSE registers are used for the
runtime implementation.
2016-10-28 14:44:12 +11:00
Xu, Chi
b96d5c23d1 rose: add new instruction CHECK_MASK_32
This is a specialisation of the "lookaround" code.
2016-10-28 14:43:33 +11:00
Matthew Barr
d21fcbfa92 Bump version number for release 2016-08-29 11:30:24 +10:00
Matthew Barr
8cf0c41552 Bump version number for release 2016-08-24 14:27:59 +10:00
Matthew Barr
34d6a0d683 Change SONAME to only use the major version number
Hyperscan will only break ABI on major version changes, and the SONAME
used for shared library versions should reflect this.
2016-08-22 16:04:48 +10:00
Matthew Barr
f06f5d0702 Use SOURCE_DATE_EPOCH for timestamp if present
The Debian reproducible builds effort suggests using
this environment variable for timestamps.
2016-08-10 15:14:30 +10:00