From edfafa001fe6eba8f6ed5df456ca8f7f7392974a Mon Sep 17 00:00:00 2001 From: flamingcow Date: Thu, 9 May 2019 23:23:09 -0700 Subject: [PATCH] New targets, use variadic WriteBody() --- .gitignore | 1 + Makefile | 26 +++++++++++++++++++------- firecgi | 2 +- stream.cc | 12 +++--------- 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 78bbc39..ce9c37e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +*.so *.o *.a example_clock diff --git a/Makefile b/Makefile index 96c17b8..5964e76 100644 --- a/Makefile +++ b/Makefile @@ -1,30 +1,42 @@ FIRE_CXX ?= clang++ -FIRE_CXXFLAGS ?= -O3 -std=gnu++2a -Wall -Werror +FIRE_CXXFLAGS ?= -O3 -std=gnu++2a -Wall -Werror -Wextra -fPIE -fPIC -fstack-protector-strong -fsanitize=safe-stack -fsanitize=safe-stack +FIRE_LDFLAGS ?= -fuse-ld=gold -flto -Wl,-z,relro -Wl,-z,now FIRE_LDLIBS ?= -lgflags -lglog -lpthread -all: firesse.a firesse.o example_clock +all: firesse.a firesse.o firesse.so example_clock objects = server.o stream.o firecgi/firecgi.o: - $(MAKE) --directory=firecgi + $(MAKE) --directory=firecgi firecgi.o firesse.a: $(objects) ar rcs $@ $^ firesse.o: $(objects) firecgi/firecgi.o - ld --relocatable --output=$@ $+ + gold -z relro -z now -r --output=$@ $+ + +firesse.so: $(objects) firecgi/firecgi.o + $(FIRE_CXX) $(FIRE_CXXFLAGS) $(FIRE_LDFLAGS) -shared -o $@ $+ $(FIRE_LDFLIBS) example_clock: example_clock.o firesse.o - $(FIRE_CXX) $(FIRE_CXXFLAGS) -o $@ $+ $(FIRE_LDLIBS) + $(FIRE_CXX) $(FIRE_CXXFLAGS) $(FIRE_LDFLAGS) -pie -o $@ $+ $(FIRE_LDLIBS) %.o: %.cc *.h Makefile $(FIRE_CXX) $(FIRE_CXXFLAGS) -c -o $@ $< clean: $(MAKE) --directory=firecgi clean - rm --force example_clock *.o *.a + rm --force example_clock *.so *.o *.a asan: $(MAKE) clean - FIRE_CXXFLAGS="-O1 -g -fsanitize=address -fno-omit-frame-pointer -std=gnu++2a -Wall -Werror" $(MAKE) all + FIRE_CXXFLAGS="-O1 -g -fsanitize=address -fno-omit-frame-pointer -std=gnu++2a -fPIE -fPIC" $(MAKE) all + +tsan: + $(MAKE) clean + FIRE_CXXFLAGS="-O1 -g -fsanitize=thread -std=gnu++2a -fPIE -fPIC" $(MAKE) all + +ubsan: + $(MAKE) clean + FIRE_CXXFLAGS="-O1 -g -fsanitize=undefined -std=gnu++2a -fPIE -fPIC" $(MAKE) all diff --git a/firecgi b/firecgi index 1cba4ac..8bd0813 160000 --- a/firecgi +++ b/firecgi @@ -1 +1 @@ -Subproject commit 1cba4ac1aef640b454afd18ade4c2f87381cc8ff +Subproject commit 8bd0813161fcb60871f415bd5b2512f2ec54b553 diff --git a/stream.cc b/stream.cc index 7a448f9..ef89cd4 100644 --- a/stream.cc +++ b/stream.cc @@ -7,18 +7,12 @@ Stream::Stream(firecgi::Request* request) bool Stream::WriteEvent(const std::string& data, uint64_t id, const std::string& type) { if (id) { - request_->WriteBody("id: "); - request_->WriteBody(std::to_string(id)); - request_->WriteBody("\n"); + request_->WriteBody("id: ", std::to_string(id), "\n"); } if (!type.empty()) { - request_->WriteBody("event: "); - request_->WriteBody(type); - request_->WriteBody("\n"); + request_->WriteBody("event: ", type, "\n"); } - request_->WriteBody("data: "); - request_->WriteBody(data); - request_->WriteBody("\n\n"); + request_->WriteBody("data: ", data, "\n"); return request_->Flush(); }