• Opcode
How does one use filter-out to nullify the LTO compiler flag in gmake for two specific source files?
Computer Science
  • Stacey Warren - Expert brainly.com
Hey! We 've verified this expert answer for you, click below to unlock the details :)
At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.
  • schrodinger
I got my questions answered at brainly.com in under 10 minutes. Go to brainly.com now for free help!
  • Opcode
The main issues I encounter are: 1. The LTO flag takes arguments, so how would one account for -flto, and -flto=n. The Makefile: ``` DEPTH = @DEPTH@ topsrcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk INTERNAL_TOOLS = 1 HOST_PROGRAM = elfhack NO_DIST_INSTALL = 1 NO_PROFILE_GUIDED_OPTIMIZE = 1 VPATH += $(topsrcdir)/build HOST_CPPSRCS = \ elf.cpp \ elfhack.cpp \ $(NULL) OS_CXXFLAGS := $(filter-out -fno-exceptions,$(OS_CXXFLAGS)) -fexceptions ifneq (,$(filter %86,$(TARGET_CPU))) CPU := x86 else ifneq (,$(filter arm%,$(TARGET_CPU))) CPU := arm else CPU := $(TARGET_CPU) endif endif CSRCS := \ inject/$(CPU).c \ inject/$(CPU)-noinit.c \ test-ctors.c \ test-array.c \ $(NULL) ifndef CROSS_COMPILE CSRCS += dummy.c endif WRAP_LDFLAGS= include $(topsrcdir)/config/rules.mk test-array$(DLL_SUFFIX) test-ctors$(DLL_SUFFIX): %$(DLL_SUFFIX): %.$(OBJ_SUFFIX) elfhack $(filter inject/%,$(CSRCS:.c=.$(OBJ_SUFFIX))) $(MKSHLIB) $(LDFLAGS) $< -nostartfiles @echo === @echo === If you get failures below, please file a bug describing the error @echo === and your environment \(compiler and linker versions\), and use @echo === --disable-elf-hack until this is fixed. @echo === # Fail if the library doesn't have $(DT_TYPE) .dynamic info $(TOOLCHAIN_PREFIX)readelf -d $@ | grep '($(DT_TYPE))' @rm -f $@.bak $(CURDIR)/elfhack -b -f $@ # Fail if the backup file doesn't exist [ -f "$@.bak" ] # Fail if the new library doesn't contain less relocations [ $$($(TOOLCHAIN_PREFIX)objdump -R $@.bak | wc -l) -gt $$(objdump -R $@ | wc -l) ] test-array$(DLL_SUFFIX): DT_TYPE=INIT_ARRAY test-ctors$(DLL_SUFFIX): DT_TYPE=INIT .PRECIOUS: test-array$(DLL_SUFFIX) test-ctors$(DLL_SUFFIX) GARBAGE += test-array$(DLL_SUFFIX) test-ctors$(DLL_SUFFIX) test-array$(DLL_SUFFIX).bak test-ctors$(DLL_SUFFIX).bak libs:: test-array$(DLL_SUFFIX) test-ctors$(DLL_SUFFIX) ifndef CROSS_COMPILE dummy: dummy.$(OBJ_SUFFIX) $(CC) -o $@ $^ $(LDFLAGS) libs:: dummy # Will either crash or return exit code 1 if elfhack is broken LD_PRELOAD=$(CURDIR)/test-array$(DLL_SUFFIX) $(CURDIR)/dummy LD_PRELOAD=$(CURDIR)/test-ctors$(DLL_SUFFIX) $(CURDIR)/dummy GARBAGE += dummy endif inject: $(NSINSTALL) -D $@ inject/%.c: inject.c $(call mkdir_deps,inject) cp $< $@ GARBAGE_DIRS += inject inject/%.$(OBJ_SUFFIX): DEFINES += -DBITS=$(if $(HAVE_64BIT_OS),64,32) inject/%.$(OBJ_SUFFIX): CFLAGS := -O2 -fno-stack-protector $(filter -m% -I%,$(CFLAGS)) inject/$(CPU)-noinit.$(OBJ_SUFFIX): DEFINES += -DNOINIT test.$(OBJ_SUFFIX): CFLAGS := -O0 host_elf.$(OBJ_SUFFIX) host_elfhack.$(OBJ_SUFFIX): elfxx.h ```

Looking for something else?

Not the answer you are looking for? Search for more explanations.