From d019d15f2b0a88f7d91291ffb1d80f6184898824 Mon Sep 17 00:00:00 2001 From: Casey McGinty Date: Wed, 12 Sep 2018 14:00:08 -0700 Subject: [PATCH] Add build define to manually enable -rdynamic LD flag --- programs/Makefile | 11 +++++++++-- programs/README.md | 7 +++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/programs/Makefile b/programs/Makefile index 6c39c983..f1a96325 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -40,8 +40,6 @@ CPPFLAGS+= -I$(ZSTDDIR) -I$(ZSTDDIR)/common -I$(ZSTDDIR)/compress \ -DXXH_NAMESPACE=ZSTD_ ifeq ($(OS),Windows_NT) # MinGW assumed CPPFLAGS += -D__USE_MINGW_ANSI_STDIO # compatibility with %zu formatting -else -DEBUGFLAGS_LD+= -rdynamic # Enable backtrace symbol names for Linux/Darwin endif CFLAGS ?= -O3 DEBUGFLAGS+=-Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \ @@ -134,6 +132,15 @@ else LZ4_MSG := $(NO_LZ4_MSG) endif +# enable backtrace symbol names for Linux/Darwin +ALL_SYMBOLS := 0 +ifeq (,$(filter Windows%, $(OS))) +ifeq ($(ALL_SYMBOLS), 1) +DEBUGFLAGS_LD+=-rdynamic +endif +endif + + .PHONY: default default: zstd-release diff --git a/programs/README.md b/programs/README.md index 0fa033cc..804cb8b0 100644 --- a/programs/README.md +++ b/programs/README.md @@ -61,6 +61,13 @@ There are however other Makefile targets that create different variations of CLI In which case, linking stage will fail if `lz4` library cannot be found. This is useful to prevent silent feature disabling. +- __ALL_SYMBOLS__ : `zstd` can display a stack backtrace if the execution + generates a runtime exception. By default, this feature may be + degraded/disabled on some platforms unless additional compiler directives are + applied. When triaging a runtime issue, enabling this feature can provided + more context to determine the location of the fault. + Example : `make zstd ALL_SYMBOLS=1` + #### Aggregation of parameters CLI supports aggregation of parameters i.e. `-b1`, `-e18`, and `-i1` can be joined into `-b1e18i1`.