Compare commits
3 Commits
49766e29f4
...
2102147a2f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2102147a2f | ||
|
|
944483d13f | ||
|
|
4d9486e281 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,2 +1,3 @@
|
|||||||
*.a
|
*.a
|
||||||
*.o
|
*.o
|
||||||
|
*.so
|
||||||
|
|||||||
23
Makefile
23
Makefile
@@ -1,7 +1,9 @@
|
|||||||
FIRE_CXX ?= clang++
|
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 ?= -lglog
|
||||||
|
|
||||||
all: firebuf.a firebuf.o
|
all: firebuf.a firebuf.o firebuf.so
|
||||||
|
|
||||||
objects = stream_buffer.o buffer.o
|
objects = stream_buffer.o buffer.o
|
||||||
|
|
||||||
@@ -9,14 +11,25 @@ firebuf.a: $(objects)
|
|||||||
ar rcs $@ $^
|
ar rcs $@ $^
|
||||||
|
|
||||||
firebuf.o: $(objects)
|
firebuf.o: $(objects)
|
||||||
ld --relocatable --output=$@ $+
|
gold -z relro -z now -r --output=$@ $+
|
||||||
|
|
||||||
|
firebuf.so: $(objects)
|
||||||
|
$(FIRE_CXX) $(FIRE_CXXFLAGS) $(FIRE_LDFLAGS) -shared -o $@ $+ $(FIRE_LDFLIBS)
|
||||||
|
|
||||||
%.o: %.cc *.h Makefile
|
%.o: %.cc *.h Makefile
|
||||||
$(FIRE_CXX) $(FIRE_CXXFLAGS) -c -o $@ $<
|
$(FIRE_CXX) $(FIRE_CXXFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm --force *.o *.a
|
rm --force *.so *.o *.a
|
||||||
|
|
||||||
asan:
|
asan:
|
||||||
$(MAKE) clean
|
$(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
|
||||||
|
|||||||
@@ -7,6 +7,10 @@ StreamBuffer::StreamBuffer(int sock, size_t size)
|
|||||||
sock_(sock) {}
|
sock_(sock) {}
|
||||||
|
|
||||||
bool StreamBuffer::Refill() {
|
bool StreamBuffer::Refill() {
|
||||||
|
if (WriteMaxLen() == 0) {
|
||||||
|
LOG(ERROR) << "buffer full";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
auto read_len = read(sock_, WritePtr(), WriteMaxLen());
|
auto read_len = read(sock_, WritePtr(), WriteMaxLen());
|
||||||
if (read_len == -1) {
|
if (read_len == -1) {
|
||||||
if (errno == EINTR) {
|
if (errno == EINTR) {
|
||||||
|
|||||||
Reference in New Issue
Block a user