From 06cf99236cf0f3f918f7b1b2348bf2a4a408ccb8 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Thu, 21 Oct 2021 13:24:33 -0700 Subject: [PATCH 1/3] dhcp6relay: Save the dbgsym package into the target folder (#9013) This makes it possible to install the debug symbols if needed. Also install the package into the debug version of sonic-dhcp-relay container. Signed-off-by: Saikrishna Arcot --- rules/dhcp6relay.mk | 3 +++ rules/docker-dhcp-relay.mk | 2 +- src/dhcp6relay/Makefile | 4 ++-- src/dhcp6relay/src/subdir.mk | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/rules/dhcp6relay.mk b/rules/dhcp6relay.mk index 5a0f9d9b819..3e6a8f09bc6 100644 --- a/rules/dhcp6relay.mk +++ b/rules/dhcp6relay.mk @@ -7,3 +7,6 @@ SONIC_DHCP6RELAY = sonic-$(SONIC_DHCP6RELAY_PKG_NAME)_$(SONIC_DHCP6RELAY_VERSION $(SONIC_DHCP6RELAY)_DEPENDS = $(LIBSWSSCOMMON) $(LIBHIREDIS) $(LIBSWSSCOMMON_DEV) $(LIBHIREDIS_DEV) $(SONIC_DHCP6RELAY)_SRC_PATH = $(SRC_PATH)/$(SONIC_DHCP6RELAY_PKG_NAME) SONIC_DPKG_DEBS += $(SONIC_DHCP6RELAY) + +SONIC_DHCP6RELAY_DBG = sonic-$(SONIC_DHCP6RELAY_PKG_NAME)-dbgsym_$(SONIC_DHCP6RELAY_VERSION)_$(CONFIGURED_ARCH).deb +$(eval $(call add_derived_package,$(SONIC_DHCP6RELAY),$(SONIC_DHCP6RELAY_DBG))) diff --git a/rules/docker-dhcp-relay.mk b/rules/docker-dhcp-relay.mk index a96abc442ef..05d4d9adf67 100644 --- a/rules/docker-dhcp-relay.mk +++ b/rules/docker-dhcp-relay.mk @@ -8,7 +8,7 @@ $(DOCKER_DHCP_RELAY)_PATH = $(DOCKERS_PATH)/docker-dhcp-relay $(DOCKER_DHCP_RELAY)_DEPENDS += $(ISC_DHCP_COMMON) $(ISC_DHCP_RELAY) $(REDIS_TOOLS) $(SONIC_DHCPMON) $(SONIC_DHCP6RELAY) $(LIBSWSSCOMMON) $(DOCKER_DHCP_RELAY)_DBG_DEPENDS = $($(DOCKER_CONFIG_ENGINE)_DBG_DEPENDS) -$(DOCKER_DHCP_RELAY)_DBG_DEPENDS += $(ISC_DHCP_DBG) +$(DOCKER_DHCP_RELAY)_DBG_DEPENDS += $(ISC_DHCP_DBG) $(SONIC_DHCP6RELAY_DBG) $(DOCKER_DHCP_RELAY)_DBG_IMAGE_PACKAGES = $($(DOCKER_CONFIG_ENGINE)_DBG_IMAGE_PACKAGES) $(DOCKER_DHCP_RELAY)_LOAD_DOCKERS = $(DOCKER_CONFIG_ENGINE) diff --git a/src/dhcp6relay/Makefile b/src/dhcp6relay/Makefile index b6352f6ab4b..4d2eedd042e 100644 --- a/src/dhcp6relay/Makefile +++ b/src/dhcp6relay/Makefile @@ -4,8 +4,8 @@ CP := cp MKDIR := mkdir CC := g++ MV := mv -LIBS := -levent -lswsscommon -pthread -lboost_thread -lboost_system -I $(PWD)/../sonic-swss-common/common -CFLAGS = -g -Wall -std=gnu11 +LIBS := -levent -lhiredis -lswsscommon -pthread -lboost_thread -lboost_system +CFLAGS = -g -Wall -std=c++17 -fPIC -I $(PWD)/../sonic-swss-common/common PWD := $(shell pwd) ifneq ($(MAKECMDGOALS),clean) diff --git a/src/dhcp6relay/src/subdir.mk b/src/dhcp6relay/src/subdir.mk index e822f96a4bc..1c93d490ec6 100644 --- a/src/dhcp6relay/src/subdir.mk +++ b/src/dhcp6relay/src/subdir.mk @@ -18,6 +18,6 @@ C_DEPS += \ src/%.o: src/%.cpp @echo 'Building file: $<' @echo 'Invoking: GCC C++ Compiler' - $(CC) -std=c++14 -D__FILENAME__="$(subst src/,,$<)" $(LIBS) -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + $(CC) -D__FILENAME__="$(subst src/,,$<)" $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" @echo 'Finished building: $<' @echo ' ' From 975e3a5a47e184bc592d44f4dc8d0995497858d1 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Thu, 27 Jan 2022 17:48:58 -0800 Subject: [PATCH 2/3] Package debugging and hardening for dhcpmon and dhcp6relay (#9862) Enable dbgsym package for dhcpmon. Allow CFLAGS and LDFLAGS from environment variables to be used in the dhcp6relay build. This makes sure that the -O2 flag from dpkg-buildflags gets used. Finally, enable all hardening flags in dpkg-buildflags for dhcp6relay and dhcpmon. The change from the default set of flags is that during linking, immediate binding of symbols is done instead of lazy binding. Signed-off-by: Saikrishna Arcot --- rules/dhcpmon.mk | 3 +++ rules/docker-dhcp-relay.mk | 2 +- src/dhcp6relay/Makefile | 4 ++-- src/dhcp6relay/debian/rules | 2 ++ src/dhcpmon/debian/rules | 2 ++ 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/rules/dhcpmon.mk b/rules/dhcpmon.mk index 173a23eac72..4a0d6bb8c41 100644 --- a/rules/dhcpmon.mk +++ b/rules/dhcpmon.mk @@ -6,3 +6,6 @@ SONIC_DHCPMON_PKG_NAME = dhcpmon SONIC_DHCPMON = sonic-$(SONIC_DHCPMON_PKG_NAME)_$(SONIC_DHCPMON_VERSION)_amd64.deb $(SONIC_DHCPMON)_SRC_PATH = $(SRC_PATH)/$(SONIC_DHCPMON_PKG_NAME) SONIC_DPKG_DEBS += $(SONIC_DHCPMON) + +SONIC_DHCPMON_DBG = sonic-$(SONIC_DHCPMON_PKG_NAME)-dbgsym_$(SONIC_DHCPMON_VERSION)_$(CONFIGURED_ARCH).deb +$(eval $(call add_derived_package,$(SONIC_DHCPMON),$(SONIC_DHCPMON_DBG))) diff --git a/rules/docker-dhcp-relay.mk b/rules/docker-dhcp-relay.mk index 05d4d9adf67..efb8675183a 100644 --- a/rules/docker-dhcp-relay.mk +++ b/rules/docker-dhcp-relay.mk @@ -8,7 +8,7 @@ $(DOCKER_DHCP_RELAY)_PATH = $(DOCKERS_PATH)/docker-dhcp-relay $(DOCKER_DHCP_RELAY)_DEPENDS += $(ISC_DHCP_COMMON) $(ISC_DHCP_RELAY) $(REDIS_TOOLS) $(SONIC_DHCPMON) $(SONIC_DHCP6RELAY) $(LIBSWSSCOMMON) $(DOCKER_DHCP_RELAY)_DBG_DEPENDS = $($(DOCKER_CONFIG_ENGINE)_DBG_DEPENDS) -$(DOCKER_DHCP_RELAY)_DBG_DEPENDS += $(ISC_DHCP_DBG) $(SONIC_DHCP6RELAY_DBG) +$(DOCKER_DHCP_RELAY)_DBG_DEPENDS += $(ISC_DHCP_DBG) $(SONIC_DHCP6RELAY_DBG) $(SONIC_DHCPMON_DBG) $(DOCKER_DHCP_RELAY)_DBG_IMAGE_PACKAGES = $($(DOCKER_CONFIG_ENGINE)_DBG_IMAGE_PACKAGES) $(DOCKER_DHCP_RELAY)_LOAD_DOCKERS = $(DOCKER_CONFIG_ENGINE) diff --git a/src/dhcp6relay/Makefile b/src/dhcp6relay/Makefile index 4d2eedd042e..dd384452a5f 100644 --- a/src/dhcp6relay/Makefile +++ b/src/dhcp6relay/Makefile @@ -5,7 +5,7 @@ MKDIR := mkdir CC := g++ MV := mv LIBS := -levent -lhiredis -lswsscommon -pthread -lboost_thread -lboost_system -CFLAGS = -g -Wall -std=c++17 -fPIC -I $(PWD)/../sonic-swss-common/common +CFLAGS += -Wall -std=c++17 -fPIE -I$(PWD)/../sonic-swss-common/common PWD := $(shell pwd) ifneq ($(MAKECMDGOALS),clean) @@ -21,7 +21,7 @@ all: sonic-dhcp6relay sonic-dhcp6relay: $(OBJS) @echo 'Building target: $@' @echo 'Invoking: G++ Linker' - $(CC) -o $(DHCP6RELAY_TARGET) $(OBJS) $(LIBS) + $(CC) $(LDFLAGS) -o $(DHCP6RELAY_TARGET) $(OBJS) $(LIBS) @echo 'Finished building target: $@' @echo ' ' diff --git a/src/dhcp6relay/debian/rules b/src/dhcp6relay/debian/rules index ce2eb52beb5..ac2cd63889e 100755 --- a/src/dhcp6relay/debian/rules +++ b/src/dhcp6relay/debian/rules @@ -1,4 +1,6 @@ #!/usr/bin/make -f +export DEB_BUILD_MAINT_OPTIONS=hardening=+all + %: dh $@ --parallel diff --git a/src/dhcpmon/debian/rules b/src/dhcpmon/debian/rules index 00c628b6625..76fc7ea1f83 100755 --- a/src/dhcpmon/debian/rules +++ b/src/dhcpmon/debian/rules @@ -1,5 +1,7 @@ #!/usr/bin/make -f +export DEB_BUILD_MAINT_OPTIONS=hardening=+all + DEB_CFLAGS_APPEND=-std=gnu11 export DEB_CFLAGS_APPEND From 28d2486ae0a69e865b4fdc51a96262dcded96eeb Mon Sep 17 00:00:00 2001 From: Ying Xie Date: Tue, 8 Feb 2022 23:23:16 +0000 Subject: [PATCH 3/3] [201811][dhcp] update debian build rules Signed-off-by: Ying Xie --- rules/dhcp6relay.mk | 2 +- rules/dhcpmon.mk | 2 +- src/dhcp6relay/Makefile | 2 +- src/dhcp6relay/debian/control | 10 ++++++++++ src/dhcp6relay/debian/rules | 6 ++++++ src/dhcpmon/debian/control | 10 ++++++++++ src/dhcpmon/debian/rules | 6 ++++++ 7 files changed, 35 insertions(+), 3 deletions(-) diff --git a/rules/dhcp6relay.mk b/rules/dhcp6relay.mk index 3e6a8f09bc6..9b6812f4274 100644 --- a/rules/dhcp6relay.mk +++ b/rules/dhcp6relay.mk @@ -8,5 +8,5 @@ $(SONIC_DHCP6RELAY)_DEPENDS = $(LIBSWSSCOMMON) $(LIBHIREDIS) $(LIBSWSSCOMMON_DEV $(SONIC_DHCP6RELAY)_SRC_PATH = $(SRC_PATH)/$(SONIC_DHCP6RELAY_PKG_NAME) SONIC_DPKG_DEBS += $(SONIC_DHCP6RELAY) -SONIC_DHCP6RELAY_DBG = sonic-$(SONIC_DHCP6RELAY_PKG_NAME)-dbgsym_$(SONIC_DHCP6RELAY_VERSION)_$(CONFIGURED_ARCH).deb +SONIC_DHCP6RELAY_DBG = sonic-$(SONIC_DHCP6RELAY_PKG_NAME)-dbg_$(SONIC_DHCP6RELAY_VERSION)_amd64.deb $(eval $(call add_derived_package,$(SONIC_DHCP6RELAY),$(SONIC_DHCP6RELAY_DBG))) diff --git a/rules/dhcpmon.mk b/rules/dhcpmon.mk index 4a0d6bb8c41..f2297b741ed 100644 --- a/rules/dhcpmon.mk +++ b/rules/dhcpmon.mk @@ -7,5 +7,5 @@ SONIC_DHCPMON = sonic-$(SONIC_DHCPMON_PKG_NAME)_$(SONIC_DHCPMON_VERSION)_amd64.d $(SONIC_DHCPMON)_SRC_PATH = $(SRC_PATH)/$(SONIC_DHCPMON_PKG_NAME) SONIC_DPKG_DEBS += $(SONIC_DHCPMON) -SONIC_DHCPMON_DBG = sonic-$(SONIC_DHCPMON_PKG_NAME)-dbgsym_$(SONIC_DHCPMON_VERSION)_$(CONFIGURED_ARCH).deb +SONIC_DHCPMON_DBG = sonic-$(SONIC_DHCPMON_PKG_NAME)-dbg_$(SONIC_DHCPMON_VERSION)_amd64.deb $(eval $(call add_derived_package,$(SONIC_DHCPMON),$(SONIC_DHCPMON_DBG))) diff --git a/src/dhcp6relay/Makefile b/src/dhcp6relay/Makefile index dd384452a5f..8b5740fd787 100644 --- a/src/dhcp6relay/Makefile +++ b/src/dhcp6relay/Makefile @@ -5,7 +5,7 @@ MKDIR := mkdir CC := g++ MV := mv LIBS := -levent -lhiredis -lswsscommon -pthread -lboost_thread -lboost_system -CFLAGS += -Wall -std=c++17 -fPIE -I$(PWD)/../sonic-swss-common/common +CFLAGS += -Wall -std=c++14 -fPIE -I$(PWD)/../sonic-swss-common/common PWD := $(shell pwd) ifneq ($(MAKECMDGOALS),clean) diff --git a/src/dhcp6relay/debian/control b/src/dhcp6relay/debian/control index d73759c4e07..fb82be7c911 100644 --- a/src/dhcp6relay/debian/control +++ b/src/dhcp6relay/debian/control @@ -15,3 +15,13 @@ Depends: libevent-2.0-5, libboost-thread1.55.0, libboost-system1.55.0 Description: SONiC DHCPv6 Relay + +Package: sonic-dhcp6relay-dbg +Architecture: any +Section: debug +Priority: extra +Built-Using: ${misc:Built-Using} +Depends: libevent-2.0-5, + libboost-thread1.55.0, + libboost-system1.55.0 +Description: SONiC DHCPv6 Relay debug symbols diff --git a/src/dhcp6relay/debian/rules b/src/dhcp6relay/debian/rules index ac2cd63889e..ed8a2397a6d 100755 --- a/src/dhcp6relay/debian/rules +++ b/src/dhcp6relay/debian/rules @@ -4,3 +4,9 @@ export DEB_BUILD_MAINT_OPTIONS=hardening=+all %: dh $@ --parallel + +override_dh_strip: + dh_strip --dbg-package=sonic-dhcp6relay-dbg + +override_dh_auto_install: + dh_auto_install --destdir=debian/sonic-dhcp6relay diff --git a/src/dhcpmon/debian/control b/src/dhcpmon/debian/control index 4456f10c002..a4fb0defdf4 100644 --- a/src/dhcpmon/debian/control +++ b/src/dhcpmon/debian/control @@ -10,6 +10,16 @@ XS-Go-Import-Path: github.com/Azure/sonic-buildimage Package: sonic-dhcpmon Architecture: any +Section: devel +Priority: optional Built-Using: ${misc:Built-Using} Depends: libevent-2.0-5 Description: SONiC DHCP Monitor + +Package: sonic-dhcpmon-dbg +Architecture: any +Section: debug +Priority: extra +Built-Using: ${misc:Built-Using} +Depends: libevent-2.0-5 +Description: SONiC DHCP Monitor debug symbols diff --git a/src/dhcpmon/debian/rules b/src/dhcpmon/debian/rules index 76fc7ea1f83..1a9a6f5db3b 100755 --- a/src/dhcpmon/debian/rules +++ b/src/dhcpmon/debian/rules @@ -7,3 +7,9 @@ export DEB_CFLAGS_APPEND %: dh $@ --parallel + +override_dh_strip: + dh_strip --dbg-package=sonic-dhcpmon-dbg + +override_dh_auto_install: + dh_auto_install --destdir=debian/sonic-dhcpmon