Giter VIP home page Giter VIP logo

openacr's Introduction

This file was created with 'abt_md' from files in txt/ -- do not edit

Table Of Contents

About

The home for this project is at https://github.com/alexeilebedev/openacr

This is OpenACR, an open-source version of acr and amc, powerful and extensible tools for creating programs and writing code as data.

It is the result of over 10 years of development and production use. The tools were initially written with the goal of formalizing construction of low-latency & realtime programs, but they ended up being suitable for all sorts of other things, and the code generation part took on a life of its own, eventually generating most of its own source code.

Since the tools are domain-agnostic, it was decided that open-sourcing them would be the best way to ensure their longevity and value, and also a way to give back to the community. After all, if it weren't for other open-source projects like Linux, gcc and the shell, this project wouldn't have been possible in the first place. And so here we are.

OpenACR is in an interesting position of having been co-developed in connection with a large software project, and later extracted back from it. Its usability on small projects is assumed but not proven. I believe its ideal use case is realized when it is taken as a kernel, and an ecosystem of commands and corresponding configuration data files are grown in-place around it. Thus, it is meant to be used a core of a project.

Enjoy,

Alexei Lebedev April 29, 2019

Why Use It

Most of software design, or rather design of libraries, looks like this: library author decides what type of data to represent and manipulate in memory; Without exception, the library declares some number of records, each containing some fields, and a set of functions that manipulate sets of these records while maintaining some library-wide invariants. At a higher level, the library author is said to pick some data structure that offers efficient/economical creation, modification, updates, and querying. Update operations range from allocation and handling of memory-related conditions and errors, to business logic (the most application-specific part).

Designing abstract data structures is difficult because of the need to track various pointers and cross-references in the resulting data structures, and subsequently rewriting these pointers without causing corruption. To be robust and to avoid leaks, the library must also track resources that were allocated. This difficulty, and the corresponding debugging effort, which usually exceeds the initial coding time by 10- or 100x, means that once a library has been built, it is not updated frequently. Sometimes, the choice of the data structure itself makes adding additional indexes impractical. For instance, if we think of our main data structure as being a "hash table of X", we have committed to a key-value map as the main access structure, and all other operations are operations other than lookup by key are made less efficient. And if we have decided to use "a binary tree of X", then we'll use the binary tree lookup and not consider also hashing the items. This type of thinking characterizes "data structure" design, and is taught in schools. The very term "data structure" presupposes that we take our data and then structure it somehow. The metaphor is some sort of data origame, or moving data around for better access. There is no concept of access as being separate from the data. This is assumed to be the price to pay if we want to write good algorithms.

On the other hand, there is a different approach to handling data -- the database approach. If the data structure approach blends data with indexing, the database approach maximally separates them. The data which we want to handle is first split (factored) into various tables. A table contains a number of records, and each record has some fields (also known as attributes). We then create indexes on attributes, so that we can quickly locate any record. Typically, any number of such indexes are allowed by a database management system. Then, we write a query in some special query language, and a mechanism known as the query planner decides which indexes to use to answer the query (so it's not just a multiply-nested for-loop over all tables) and hopefully completes the query. But not that quickly. It is an accepted fact that you pay for the generality of this approach with correspondingly low runtime performance. When you really want performance, you use classical methods to get it.

And yet, we know that all programming can be viewed as manipulation of in-memory databases. Thus, the main motivation of amc is to give you the flexibility of crafting your own in-memory database with any number of tables and indexes, without having to implement all the operations that implement creation, replacement, update, deletion and querying of these records.

As a software architect and user of amc, you decide on the schema to use for your in-memory database, and amc follows the constraints in your schema to implement cascading deletes, automatic group-bys, fast allocation of records using chained memory pools, and many other things. The number and the variety of structures generated by amc is more similar to that of a standard C++ library than an RDBMS.

Amc generates roughly 20 lines of code for each line of input. The code it generates is usually of the most error-prone and performance-critical kind, and you can account for the generated code at the assembly instruction level. The generated code is documented, readable and debuggable, and is provided in a standard target language: a conservative subset of C++ (circa C++ 1997), eschewing all modern constructs. This value proposition has immense consequences: it means that a large and expensive software project can become a medium-sized software project, and a medium-sized software project can become a small software project. Ultimately, this is what makes amc worth learning

When you co-evolve the schema together with your application, you can easily add and remove indexes on the fly, and fine-tune them later. At the same time, you can co-evolve amc itself with the project. That's because amc isn't built and installed on the host system as a stand-alone, binary package. It is provided in source code form and versioned together with the project it supports, forming a single eco-system.

Setup and Installation

Presently, this project has been tested with the following distributions / compilers:

  • clang on MacOS (a.k.a. Darwin)
  • clang on FreeBSD
  • clang on Linux (RHEL, CentOS, Ubuntu, Debian)
  • g++ on Linux
  • g++-9 on Linux

The MariaDB and OpenSSL packages are the main external dependencies. MariaDB (formerly MySQL) is not really required, but it's used by acr_my, ssim2mysql and mysql2ssim utilities. OpenSSL provides libcrypto which is for SHA1 functions.

Pre-requisites: CentOS:

yum install -y mariadb mariadb-devel mariadb-server

Pre-requisites: Ubuntu/Debian

apt install -y mariadb-server mariadb-client libmariadb-dev libmariadbd-dev \
    libssl-dev libcurl4-openssl-dev liblz4-dev cppcheck
apt install llvm llvm-dev  # to enable abt -compiler llvm

Pre-requisites: MacOS

Install brew. Then,

brew install mariadb openssl
ln -s /usr/local/opt/openssl/lib/libcrypto.a /usr/local/lib/
ln -s /usr/local/opt/openssl/lib/libssl.a /usr/local/lib/

Path

Add the relative path bin to your path. All commands are issued from this, top-level directory. This normalizes all pathnames to a single form.

set PATH=$PATH:bin

Building

To build everything, you can run make (provided for convenience) or the bootstapped version of abt called ai:

ai

ai will choose a bootstrap file by looking at what kind of system you're running on and what compilers you have. It won't install pre-requisites, that fun exercise is left to the reader. See the section on abt for complete documentation of this process.

ai should build abt using a canned script, then switch to abt and build the rest. If any of this fails, you may need to file a bug report.

Cygwin Support

Support of Windows (Cygwin) is needed, so if you'd like to help, please send pull requests.

Editor configuration files

See files in conf/ for sample config files that provide ssim syntax highlighting, etc. Here are some commands to get set it up. You may already have some of these files, so you'll need to decide whether you want to merge provided configs with yours, replace or do something else.

ln -s $PWD/conf/emacs.el ~/.emacs
ln -s $PWD/conf/elisp ~/elisp
ln -s $PWD/conf/vimrc ~/.vimrc
ln -s $PWD/conf/vim ~/.vim
ln -s $PWD/conf/alexei/bash_profile ~/.bash_profile

Environment Variables

  • EDITOR - standard environment variable specifying which editor to use.

Known Issues

Currently, optimization levels -O2 and higher cannot be used with gcc 8 and higher, due to the way the optimizer results in corruptions.

Directory Structure

  • bin All executable files. Add relative path 'bin/' to your PATH
  • conf Miscellaneous config files for emacs, vi
  • cpp All files ending in .cpp; cpp/gen contains outputs from amc
  • data All ssim files -- configuration tables etc.
  • diff Patch files
  • extern Files whose original home is not here.
  • include All files ending in .h; include/gen contains outputs from amc
  • lock Runtime lock files
  • temp Temp dir
  • txt .txt and .md (markdown) files

Binaries

All executable files are accessible from bin (both scripts and binary executables). For each binary, there is a soft link from bin to the directory where the binary really sits.

Binaries are compiled with abt -build and the soft link in bin/ can be updated with abt -install.

Binaries are not kept in git, only the soft links in bin/ are stored. To make these links valid, the targets must be built with ai, which is a bootstrap script that will build abt if it doesn't yet exist.

Intermediate Files

Object files, libraries and executables are kept in build/release/ directory. Build directories can be wiped with make clean. After that, the abt binary will no longer exist, and it would have to be re-created with ai

The intermediate directory has a flat structure. The name of each object file is the path to the .cpp file with /s replaced by .s.

$ ls build/release/
abc                    cpp.amc.ctype.read.o     cpp.amc.regx.o          cpp.atf.amc.strconv.o ...
abt                    cpp.amc.delptr.o         cpp.amc.sbrk.o          cpp.atf.amc.tary.o
acr                    cpp.amc.dflt.o           cpp.amc.signature.o     cpp.atf.amc.varlen.o
acr_compl              cpp.amc.disp.call.o      cpp.amc.size.o          cpp.atf.amc.zdlist.o
...

Writing Readmes

The top-level README.md file is created by processing specific .md files under txt/. These files are described in the readme table (acr readme). Readme files can be in-line or included via a link. This is configured by the inl flag:

inline-command: acr readme | head -1
dev.readme  gitfile:txt/about.md                   inl:Y  sandbox:N  filter:""               comment:""

The top-level README.md file is created with make readme or, in reality, atf_ci readme. It is a by-product of normalization and has to be up-to-date for every commit.

In addition, output of arbitrary commands can be embedded inside readme files using the inline-command directive. Everything after this directive and before the next triple-backtick is replaced with the output of specified command. An example of such a command can be seen above

Orgfile: organize and deduplicate files by timestamp and by contents

See txt/orgfile.md

Tutorial 1: Parts And Projects Tutorial

See txt/tut1.md

Tutorial 2: Parts And Projects in SQL

See txt/tut2.md

Tutorial 3: Scheduling And Main Loop

See txt/tut3.md

Tutorial 4: Command Lines

See txt/tut4.md

Tutorial 5: Running multiple subprocesses

See txt/tut5.md

Structured Keys

See txt/sknf.md

acr: Auto Cross Reference

See txt/acr.md

acr_in: Show input tuples for target

See txt/acr_in.md

abt: A Build Tool

See txt/abt.md

acr_ed: Acr Editor

See txt/acr_ed.md

amc: Algo Model Compiler

See txt/amc.md

Describing Protocols in AMC

See txt/amc/protocol.md

Reading and Printing

See txt/amc/print.md

Fconst/Gconst: Enumerated Types

See txt/amc/fconst.md

Amc: Size and field offset assertions

See txt/amc/csize.md

Tests

See txt/tests.md

Mdbg: Gdb front-end

See txt/mdbg.md

Scriptlets

See txt/script.md

Coding Style

See txt/coding-style.md

Testimonials

See txt/testimonials.md

amc: Subprocess Invocation

See txt/amc/exec.md

amc: Program Startup & Main

See txt/amc/main.md

AMS: Algo Mesaging System

See txt/ams.md

atf_comp: A component test framework

See txt/atf_comp.md

atf_cov: Code coverage measurement tool

See txt/atf_cov.md

Tracing

See txt/trace.md

Printing / Process output

See txt/prlog.md

Fault Management

See txt/fm.md

Troubleshooting build errors

See txt/abt-troubleshoot.md

atf_fuzz: fuzz tester

See txt/atf_fuzz.md

sv2ssim - Separated Value file processor

See txt/sv2ssim.md

Gcli - gitlab/github command-line client

See txt/gcli.md

Sandbox - sandbox management tool

See txt/sandbox.md

openacr's People

Contributors

aaslyan avatar alexeilebedev avatar ali5h avatar polovinkin-alexey avatar wlvchandler avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openacr's Issues

make argtuple available in algo_lib::_db

Currently argtuple is local and is not available in algo_lib::_db -make it available
void gcli::MainArgs(int argc, char **argv) {
Argtuple argtuple;
Argtuple_ReadArgv(argtuple, argc,argv,gcli_syntax, gcli_help);

c++ fail to compile openacr

$ ai

abt doesn't seem to exist. selecting bootstrap file...

considering Linux-clang++.release-x86_64

considering Linux-g++.release-x86_64

make-bootstrap: running bin/bootstrap/Linux-g++.release-x86_64

this script has been created using atf_norm bootstra

now building an abt executable which will build the rest

setting up soft link build/coverage (default)

setting up soft link build/debug (default)

setting up soft link build/profile (default)

setting up soft link build/release (default)

  • mkdir -p temp
  • mkdir -p build/Linux-g++.release-x86_64
  • g++ -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-l
    ong -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -Wpedantic -c include/algo_pch.hpp -o build/Linux-g++.release-x86_64/include.algo_pch.hpp.gch
  • g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unus
    ed-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote build/Linux-g++.release-x86_64/ -include include.algo_pch.hpp -Wpedantic -c cpp/abt/build.cpp -o build/Linux-g++.release-x86_64/cpp.abt.build
    .o
    cc1plus: error: build/Linux-g++.release-x86_64/include.algo_pch.hpp.gch: had text segment at different address [-Werror]
    cc1plus: error: one or more PCH files were found, but they were invalid
    cc1plus: fatal error: include.algo_pch.hpp: No such file or directory
    cc1plus: all warnings being treated as errors
    compilation terminated.

------------------------------------------------------------------

[0 Sep 10 17:13:07] [email protected]:~/openacr-master
$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release
--enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --disable-lib
mpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC)

Implement non-global steps

Support adding an fstep to a structure other than FDb.
Doing so automatically adds a cd_list on the parent structure, and implements are step for it using RotateFirst.
The step inherits steptype from the original record.

FirstChanged function for the non-global step is updated to insert/remove the parent struct from the appropriate list. Thus, the global list only contains records with non-empty target field.

Example:

dmmeta.field field:ns.FConn.cd_request arg:ns.FRequest 
dmmeta.fstep field:ns.FConn.cd_request steptype:Inline

The no other changes are needed. User implements step as follows:

void ns::cd_conn_step() {
   ns::FConn &conn=*cd_conn_RotateFirst();
   ns::FRequest &request=*cd_request_RotateFirst(step);

The step is guaranteed to be called only when it is possible to execute (the request list is non-empty, and the connection for which it's non-empty is the first connection).

MacOS Catalina (10.15) breaks OpenAcr

OpenAcr is no longer built with the latest MacOS release 10.15.

% ai

  • mkdir -p temp
  • mkdir -p build/Darwin-clang++.release-x86_64
  • clang++ -O -Werror -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-error -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -fpch-preprocess -c include/algo_pch.hpp -o build/Darwin-clang++.release-x86_64/include.algo_pch.hpp.gch
    In file included from include/algo_pch.hpp:26:
    In file included from ./include/algo.h:37:
    ./include/algo/lib.h:239:16: warning: 'strptr_Hash' is missing exception specification 'attribute((nothrow))' [-Wmissing-exception-spec]
    inline u32 strptr_Hash(u32 prev, algo::strptr val);
    ^

amc: implement LRU for thash

Often the same key is looked up in thash several times in a row.
Implement an LRU option where thash keeps several recent keys/pointers in the parent record.
This saves calculation of hash index, and a lookup in Tary and collision list scan.
LRU size can be calculated by running a component test and calculating the optimal value on that test.

implement cascins

When adding a record that has some parents (aka Upptr), either by direct allocation or calling ind_..._GetOrCreate, we need to create those parent records first, before Xref is called, otw xref will fail. cascins can help with this and automatically create those parent records for us.

Initial build error

Initial build after clone:

$ ai
# this script has been created using make bootstrap
# now building an abt executable which will build the rest
++ mkdir -p temp
++ mkdir -p dflt.release-x86_64
++ echo dev.gitinfo
++ ld -r -b binary gitinfo.txt -o dflt.release-x86_64/gitinfo.o
++ rm -f gitinfo.txt
++ g++ -O2 -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wpedantic -c include/algo_pch.h -o dflt.release-x86_64/include.algo_pch.h.gch
In file included from ./include/algo.h:59,
                 from include/algo_pch.h:26:
./include/algo.inl.h: In function ‘void algo::qCall(const algo::THook<>&)’:
./include/algo.inl.h:573:18: error: cast between incompatible function types from ‘algo::THook<>::HookFcn’ {aka ‘void (*)(void*, algo::NotUsed*, algo::NotUsed*, algo::NotUsed*)’} to ‘Func’ {aka ‘void (*)(void*)’} [-Werror=cast-function-type]
     Func(hook.fcn)(hook.ctx);
                  ^
cc1plus: all warnings being treated as errors

jsonfld table

add jsonfld table to better describe json formatting

dmmeta.field field:ns.User.name
dmmeta.field field:ns.User.password
dmmeta.field field:ns.User.age   # this will be used bc there is no jsonfld
dmmeta.field field:ns.User.address   # this will be used bc there is no jsonfld
dmmeta.jsonfld jsonfld:ns.User.name/username  omitdflt:N  # this will rename the field
dmmeta.jsonfld jsonfld:ns.User.password/  omitdflt:N   # this will remove the field
dmmeta.jsonfld jsonfld:ns.User.address/address  omitdflt:Y   # omit it if it is empty

so ns.User name:test password:pass age:30 address:"" becomes {"username":"test","age":30}

for encoding type foo:bar

  • if there is jsonfld:type.foo/tag. if tag is empty ignore the field, otw use the tag as the key for foo, or
  • use foo as the key

for decoding of json {"foo":"bar"} we can do these in order

  • A jsonfld with a tag of "foo" , or
  • A field with name "foo", or
  • A field named "FOO" or "Foo" or some other case-insensitive match of "foo".

async

Would use of co_await simplify things?

acr to automatically generate gconsts for command line defaults

It will make some code cleaner and better verifiable at the compile stage if all command lines defaults are automatically generated as gconsts.
Say I have a namespace test with command::test and params a and b. Currently at best I can get to the command line defaults dynamically by specifying something like command::test test_dflt and later comparing some param to test_dflt.a or test_dflt.b etc... Generating constants like test_Test_command_dflt_a and test_Test_command_dflt_b (at least for all string, bool and Regex params), will allow for static verification for all cases when a command line default changes.

Ctypes with varlen field cannot have membership

Amc complains about the varlen field not being the last member. But this is only because the generated membership fields are always placed at the end of the ctype.

fix: generate the varlen field after all membership fields

bin/targ-diff script is broken

  1. git-current-branch became git-current-ref
  2. snippet below has a typo: OTHERCOMIT and OTHERCOMMIT

BRANCH=$(git-current-branch)
OTHERCOMIT=$2
if [ "$OTHERCOMMIT" == "" ]; then
OTHERCOMMIT="HEAD~"
fi

gcc (Ubuntu 4.8.5-4ubuntu8) 4.8.5 build issue

gcc (Ubuntu 4.8.5-4ubuntu8) 4.8.5
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE

cpp/lib/algo/backtrace.cpp: In function ‘void Signal(int, siginfo_t*, void*)’:
cpp/lib/algo/backtrace.cpp:239:70: error: invalid use of incomplete type ‘struct Signal(int, siginfo_t*, void*)::ucontext’
uintptr_t ip = context ? (uintptr_t)(((struct ucontext )context)->uc_mcontext.gregs[REG_RIP]) : 0;
^
cpp/lib/algo/backtrace.cpp:239:51: error: forward declaration of ‘struct Signal(int, siginfo_t
, void*)::ucontext’
uintptr_t ip = context ? (uintptr_t)(((struct ucontext *)context)->uc_mcontext.gregs[REG_RIP]) : 0;
^

mariadb vs mysql

Per REAME.md, maiadb v10.3 (stable) was installed.
The header file for mariadb on ubuntu(18.04) is in

/usr/include/mariadb

so following header's absolute path inclusion failed.
include/lib/lib_mysql.h
include/gen/lib_mysql_gen.h
cpp/mysql2ssim.cpp

#include <mysql/mysql.h>

After changed to

#include <mariadb/mysql.h>

It passed ai

Ubuntu bionic and debian stretch bootstrap failure

Ubuntu 18

apolovin@hrunze2:~/repo/openacr$ uname -a
Linux hrunze2 4.15.0-47-generic #50-Ubuntu SMP Wed Mar 13 10:44:52 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
apolovin@hrunze2:~/repo/openacr$ ai
bin/abt-bootstrap: строка 2: bin/abt-bootstrap.dflt: Нет такого файла или каталога
apolovin@hrunze2:~/repo/openacr$ export COMPILER=g++
apolovin@hrunze2:~/repo/openacr$ ai
# this script has been created using make bootstrap
# now building an abt executable which will build the rest
++ mkdir -p temp
++ mkdir -p dflt.release-x86_64
++ g++ -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -Wpedantic -c include/algo_pch.h -o dflt.release-x86_64/include.algo_pch.h.gch
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/abt/build.cpp -o dflt.release-x86_64/cpp.abt.build.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/abt/disas.cpp -o dflt.release-x86_64/cpp.abt.disas.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/abt/main.cpp -o dflt.release-x86_64/cpp.abt.main.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/abt/opt.cpp -o dflt.release-x86_64/cpp.abt.opt.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/gen/abt_gen.cpp -o dflt.release-x86_64/cpp.gen.abt_gen.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/gen/src_hdr_gen.cpp -o dflt.release-x86_64/cpp.gen.src_hdr_gen.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/src/hdr.cpp -o dflt.release-x86_64/cpp.src.hdr.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/gen/algo_lib_gen.cpp -o dflt.release-x86_64/cpp.gen.algo_lib_gen.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/arg.cpp -o dflt.release-x86_64/cpp.lib.algo.arg.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/backtrace.cpp -o dflt.release-x86_64/cpp.lib.algo.backtrace.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/cpu_hz.cpp -o dflt.release-x86_64/cpp.lib.algo.cpu_hz.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/crc32.cpp -o dflt.release-x86_64/cpp.lib.algo.crc32.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/errtext.cpp -o dflt.release-x86_64/cpp.lib.algo.errtext.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/file.cpp -o dflt.release-x86_64/cpp.lib.algo.file.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/fmt.cpp -o dflt.release-x86_64/cpp.lib.algo.fmt.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/iohook.cpp -o dflt.release-x86_64/cpp.lib.algo.iohook.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/lib.cpp -o dflt.release-x86_64/cpp.lib.algo.lib.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/line.cpp -o dflt.release-x86_64/cpp.lib.algo.line.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/lockfile.cpp -o dflt.release-x86_64/cpp.lib.algo.lockfile.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/mmap.cpp -o dflt.release-x86_64/cpp.lib.algo.mmap.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/prlog.cpp -o dflt.release-x86_64/cpp.lib.algo.prlog.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/psp.cpp -o dflt.release-x86_64/cpp.lib.algo.psp.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/rand.cpp -o dflt.release-x86_64/cpp.lib.algo.rand.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/regx.cpp -o dflt.release-x86_64/cpp.lib.algo.regx.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/string.cpp -o dflt.release-x86_64/cpp.lib.algo.string.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/time.cpp -o dflt.release-x86_64/cpp.lib.algo.time.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/timehook.cpp -o dflt.release-x86_64/cpp.lib.algo.timehook.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/tstamp.cpp -o dflt.release-x86_64/cpp.lib.algo.tstamp.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/algo/txttbl.cpp -o dflt.release-x86_64/cpp.lib.algo.txttbl.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/gen/_gen.cpp -o dflt.release-x86_64/cpp.gen._gen.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/gen/algo_gen.cpp -o dflt.release-x86_64/cpp.gen.algo_gen.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/gen/algo_pch_gen.cpp -o dflt.release-x86_64/cpp.gen.algo_pch_gen.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/gen/amcdb_gen.cpp -o dflt.release-x86_64/cpp.gen.amcdb_gen.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/gen/atf_gen.cpp -o dflt.release-x86_64/cpp.gen.atf_gen.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/gen/atfdb_gen.cpp -o dflt.release-x86_64/cpp.gen.atfdb_gen.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/gen/command_gen.cpp -o dflt.release-x86_64/cpp.gen.command_gen.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/gen/dev_gen.cpp -o dflt.release-x86_64/cpp.gen.dev_gen.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/gen/dmmeta_gen.cpp -o dflt.release-x86_64/cpp.gen.dmmeta_gen.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/gen/ietf_gen.cpp -o dflt.release-x86_64/cpp.gen.ietf_gen.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/gen/lib_prot_gen.cpp -o dflt.release-x86_64/cpp.gen.lib_prot_gen.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/gen/report_gen.cpp -o dflt.release-x86_64/cpp.gen.report_gen.o
++ g++ -x c++ -Wno-invalid-offsetof -O -Werror -ffunction-sections -fdata-sections -Wsequence-point -Wno-multichar -Wall -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Winvalid-pch -DUNAME_LINUX -iquote . -msse4.2 -D AOS_SSE42 -Wno-vla -Wno-unused-local-typedefs -Wno-long-long -Wno-strict-aliasing -fpch-preprocess -Wno-cast-function-type -Wno-class-memaccess -iquote dflt.release-x86_64/ -include include.algo_pch.h -Wpedantic -c cpp/lib/lib_prot.cpp -o dflt.release-x86_64/cpp.lib.lib_prot.o
++ rm -f dflt.release-x86_64/lib_prot-x86_64.a
++ ar cr dflt.release-x86_64/lib_prot-x86_64.a dflt.release-x86_64/cpp.gen._gen.o dflt.release-x86_64/cpp.gen.algo_gen.o dflt.release-x86_64/cpp.gen.algo_pch_gen.o dflt.release-x86_64/cpp.gen.amcdb_gen.o dflt.release-x86_64/cpp.gen.atf_gen.o dflt.release-x86_64/cpp.gen.atfdb_gen.o dflt.release-x86_64/cpp.gen.command_gen.o dflt.release-x86_64/cpp.gen.dev_gen.o dflt.release-x86_64/cpp.gen.dmmeta_gen.o dflt.release-x86_64/cpp.gen.ietf_gen.o dflt.release-x86_64/cpp.gen.lib_prot_gen.o dflt.release-x86_64/cpp.gen.report_gen.o dflt.release-x86_64/cpp.lib.lib_prot.o
++ ranlib dflt.release-x86_64/lib_prot-x86_64.a
++ rm -f dflt.release-x86_64/algo_lib-x86_64.a
++ ar cr dflt.release-x86_64/algo_lib-x86_64.a dflt.release-x86_64/cpp.gen.algo_lib_gen.o dflt.release-x86_64/cpp.lib.algo.arg.o dflt.release-x86_64/cpp.lib.algo.backtrace.o dflt.release-x86_64/cpp.lib.algo.cpu_hz.o dflt.release-x86_64/cpp.lib.algo.crc32.o dflt.release-x86_64/cpp.lib.algo.errtext.o dflt.release-x86_64/cpp.lib.algo.file.o dflt.release-x86_64/cpp.lib.algo.fmt.o dflt.release-x86_64/cpp.lib.algo.iohook.o dflt.release-x86_64/cpp.lib.algo.lib.o dflt.release-x86_64/cpp.lib.algo.line.o dflt.release-x86_64/cpp.lib.algo.lockfile.o dflt.release-x86_64/cpp.lib.algo.mmap.o dflt.release-x86_64/cpp.lib.algo.prlog.o dflt.release-x86_64/cpp.lib.algo.psp.o dflt.release-x86_64/cpp.lib.algo.rand.o dflt.release-x86_64/cpp.lib.algo.regx.o dflt.release-x86_64/cpp.lib.algo.string.o dflt.release-x86_64/cpp.lib.algo.time.o dflt.release-x86_64/cpp.lib.algo.timehook.o dflt.release-x86_64/cpp.lib.algo.tstamp.o dflt.release-x86_64/cpp.lib.algo.txttbl.o
++ ranlib dflt.release-x86_64/algo_lib-x86_64.a
++ g++ -o dflt.release-x86_64/abt dflt.release-x86_64/gitinfo.o dflt.release-x86_64/cpp.abt.build.o dflt.release-x86_64/cpp.abt.disas.o dflt.release-x86_64/cpp.abt.main.o dflt.release-x86_64/cpp.abt.opt.o dflt.release-x86_64/cpp.gen.abt_gen.o dflt.release-x86_64/algo_lib-x86_64.a dflt.release-x86_64/lib_prot-x86_64.a dflt.release-x86_64/algo_lib-x86_64.a -Wl,--gc-sections -ldl -lm -lstdc++
g++: error: dflt.release-x86_64/gitinfo.o: Нет такого файла или каталога

The same on Debian 9

clang requires a different option for compilation

error: unknown warning option '-Wno-implicit-int-float-conversion'; did you mean '-Wno-implicit-float-conversion'? [-Werror,-Wunknown-warning-option]

$ clang -v
clang version 9.0.1 (Red Hat 9.0.1-2.module+el8.2.0+5494+7b8075cf)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/8
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/8
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64

Replacing the option with clang suggestion fixes the compilation

acr_ed.cpp has -Werror=unused-result

commit 1778f4387521a27d7aff6ce896b1006fe16378bb

may have a typo in acr_ed.cpp, which causes hiccups in ai

cpp/atf/norm/acr_ed.cpp:60:5: error: ignoring return value of ‘int chdir(const char*)’, declared with attribute warn_unused_result [-Werror=unused-result]
     (void)chdir("temp/acr_ed");
     ^~~~~~~~~~~~~~~~~~~~~~~~~~

cpp/atf/norm/acr_ed.cpp:82:5: error: ignoring return value of ‘int chdir(const char*)’, declared with attribute warn_unused_result [-Werror=unused-result]
     (void)chdir("../../");
     ^~~~~~~~~~~~~~~~~~~~~

change to

// Source: cpp/atf/norm/acr_ed.cpp
#include "include/define.h"
...
errno_vrfy(chdir("temp/acr_ed")==0, "chdir");
...
errno_vrfy(chdir("../../")==0, "chdir");

may fix the issue

-O3 results in crash when running amc

The issue is this code:

// --- amc.FDb.lpool.ReallocMem                                                                                                      
// Allocate new block, copy old to new, delete old.                                                                                  
// New memory is always allocated (i.e. size reduction is not a no-op)                                                               
// If no memory, return NULL: old memory untouched                                                                                   
void* amc::lpool_ReallocMem(void *oldmem, u64 old_size, u64 new_size) {                                                              
    void* ret = oldmem;                                                                                                              
    if (new_size != old_size) {                                                                                                      
        ret = lpool_AllocMem(new_size);                                                                                              
        if (ret) {                                                                                                                   
            memcpy(ret,oldmem,u64_Min(new_size,old_size));                                                                           
            lpool_FreeMem(oldmem, old_size);                                                                                         
        }                                                                                                                            
    }                                                                                                                                
    return ret;                                                                                                                      
}                                                                                                                                    

Here, if (ret) should be changed to if (ret && oldmem), otherwise gcc thinks that oldmem has been dereferenced by memcpy, and inlines lpool_FreeMem, with the assumption that oldmem is provably non-NULL. This results in a crash.

Create a table that specifies the following constraint:

when a certain field has a certain value (specified as a regex), a specified ssimfile must exist.
Update acr and amc to interpret this table

dmmeta.reqssimfile  value:dmmeta.Field.reftype:Inlary ssimfile:dmmeta.inlary  bidir:Y
dmmeta.reqssimfile  value:dmmeta.Field.reftype:Thash ssimfile:dmmeta.thash    bidir:Y
dmmeta.reqssimfile  value:dmmeta.Field.reftype:Thash ssimfile:dmmeta.thash    bidir:Y
dmmeta.reqssimfile  value:dmmeta.Ns.nstype:proto ssimfile:dmmeta.nsproto  bidir:Y

Expand gitlab cli utility to operate on multiple projects from the same directory

Motivation:
It would be helpful if gitlab cli utility would allow for manipulation of multiple projects at once.
Limitations:
gitlab cli
Stores only one key in ~/
Has hard-coded "origin" for .git/config
It doesn't indicate the project at the issue creation

It is fairly straightforward to expand gitlab cli to cover multiple projects.

Ptrary updates

  1. Generate membership test function
  2. Generate First(), qFirst(), Last(), qLast()
  3. NeedFirstChangedQ should return false

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.