EXTRACT_SYMBOL(search_exception_tables)
[ksplice.git] / kmodsrc / Makefile.in
blob105bf26225a731ac0fb7830c84e70aa5a765b645
1 prefix = @prefix@
2 datarootdir = @datarootdir@
3 datadir = @datadir@
5 ksplice-script = $(datadir)/ksplice/ksplice-obj.pl
7 KSPLICE_KID ?= $(error "You must set KSPLICE_KID.")
8 KSPLICE_VERSION ?= $(error "You must set KSPLICE_VERSION.")
9 map_printk ?= $(error "You must set map_printk.")
11 ifneq ($(KSPLICE_STANDALONE),)
12 KSPLICE_CFLAGS += -DKSPLICE_STANDALONE
13 endif
14 KSPLICE_CFLAGS += -DKSPLICE_KID=$(KSPLICE_KID)
15 KSPLICE_CFLAGS += -DMAP_PRINTK=0x$(map_printk)L
17 comma ?= ,
18 name-fix ?= $(subst $(comma),_,$(subst -,_,$(1)))
19 target = $(call name-fix,$(mod))
20 KSPLICE_MID = $(KSPLICE_KID)_$(target)
21 KSPLICE = ksplice-$(KSPLICE_MID)
22 KSPLICE_CORE = ksplice-$(KSPLICE_KID)
24 quiet_cmd_ksplice-collect = COLLECT $@
25 cmd_ksplice-collect = \
26 $(ksplice-script) finalize $< $<.final $* && \
27 $(LD) --script=$(obj)/ksplice.lds -r -o $@ $<.final
29 ksplice-mod-cflags = $(KSPLICE_CFLAGS) \
30 "-DKSPLICE_MID=$(KSPLICE_MID)" \
31 $(addprefix -DKSPLICE_TARGET=,$(target)) \
32 "-DKSPLICE_VERSION=\"$(KSPLICE_VERSION)\""
34 ksplice-new-code-objs = new-code-$(target).o collect-new-code-$(mod).o
35 ksplice-old-code-objs = old-code-$(target).o collect-old-code-$(mod).o
37 ifneq ($(KSPLICE_STANDALONE),)
38 ifeq ($(KSPLICE_SKIP_CORE),)
39 obj-m += $(KSPLICE_CORE).o
40 endif
41 UDIS86 = x86/libudis86
42 kudis86 += \
43 $(UDIS86)/itab.o \
44 $(UDIS86)/input.o \
45 $(UDIS86)/decode.o \
46 $(UDIS86)/syn.o \
47 $(UDIS86)/syn-intel.o \
48 $(UDIS86)/syn-att.o \
49 $(UDIS86)/udis86.o
50 $(KSPLICE_CORE)-objs = $(fake-ksplice.o) ksplice-rmsyms.o $(kudis86)
51 fake-ksplice.o = ksplice.o
52 $(obj)/$(KSPLICE_CORE).o: fake-ksplice.o =
53 endif
55 define ksplice-mod-vars
56 obj-m += $(KSPLICE)-new.o $(KSPLICE)-old.o
57 $(KSPLICE)-new-objs = $(ksplice-new-code-objs)
58 $(KSPLICE)-old-objs = $(ksplice-old-code-objs)
59 CFLAGS_new-code-$(target).o = $(ksplice-mod-cflags)
60 CFLAGS_old-code-$(target).o = $(ksplice-mod-cflags)
61 CPPFLAGS_ksplice.lds = $(ksplice-mod-cflags) -P
62 endef
64 $(foreach mod,$(KSPLICE_MODULES),$(eval $(ksplice-mod-vars)))
66 ifneq ($(KSPLICE_MODULES),)
67 $(foreach mod,$(KSPLICE_MODULES),$(obj)/new-code-$(target).o): $(obj)/%.o: $(src)/new_code_loader.c FORCE
68 $(call if_changed_rule,cc_o_c)
69 $(foreach mod,$(KSPLICE_MODULES),$(obj)/old-code-$(target).o): $(obj)/%.o: $(src)/old_code_loader.c FORCE
70 $(call if_changed_rule,cc_o_c)
71 endif
73 $(obj)/collect-new-code-%.o: $(obj)/%.o.KSPLICE_new_code $(obj)/ksplice.lds FORCE
74 $(call if_changed,ksplice-collect)
75 $(obj)/collect-old-code-%.o: $(obj)/%.o.KSPLICE_old_code $(obj)/ksplice.lds FORCE
76 $(call if_changed,ksplice-collect)
78 ifeq ($(quiet_cmd_cpp_lds_S),)
79 quiet_cmd_cpp_lds_S = LDS $@
80 cmd_cpp_lds_S = $(CPP) -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) $(EXTRA_CPPFLAGS) $(CPPFLAGS_$(@F)) $(cpp_flags) -D__ASSEMBLY__ -o $@ $<
82 %.lds: %.lds.S FORCE
83 $(call if_changed_dep,cpp_lds_S)
84 endif
86 $(obj)/ksplice.lds: $(src)/ksplice.lds.S FORCE
87 $(call if_changed_dep,cpp_lds_S)
89 CFLAGS_offsets.o += $(KSPLICE_CFLAGS)
90 ifeq ($(KSPLICE_SKIP_CORE),)
91 extra-y += offsets.o
92 endif
94 ifneq ($(KSPLICE_STANDALONE),)
95 CFLAGS_ksplice.o += $(KSPLICE_CFLAGS)
97 RMSYMS = \
98 thread_return \
99 bust_spinlocks \
100 task_curr \
101 __kernel_text_address \
102 tasklist_lock \
103 stop_machine_run \
104 module_mutex \
105 modules \
106 init_mm \
107 phys_base \
108 kallsyms_addresses \
109 kallsyms_num_syms \
110 kallsyms_names \
111 kallsyms_token_table \
112 kallsyms_token_index \
113 __module_text_address \
114 __start___ksymtab \
115 __stop___ksymtab \
116 __start___ksymtab_gpl \
117 __stop___ksymtab_gpl \
118 __start___ksymtab_gpl_future \
119 __stop___ksymtab_gpl_future \
120 __start___ksymtab_unused \
121 __stop___ksymtab_unused \
122 __start___ksymtab_unused_gpl \
123 __stop___ksymtab_unused_gpl \
124 __start___ksymtab_gpl_future \
125 __stop___ksymtab_gpl_future \
126 __start___kcrctab \
127 __start___kcrctab_gpl \
128 __start___kcrctab_gpl_future \
129 __start___kcrctab_unused \
130 __start___kcrctab_unused_gpl \
131 ftrace_trace_function
133 quiet_cmd_ksplice-rmsyms = RMSYMS $@
134 cmd_ksplice-rmsyms = \
135 $(ksplice-script) rmsyms $< $<.rmsyms $(RMSYMS) && \
136 $(LD) -r -o $@ $<.rmsyms $(src)/ksplice-rmsyms.lds
137 $(obj)/ksplice-rmsyms.o: $(obj)/ksplice.o $(obj)/offsets.o FORCE
138 $(call if_changed,ksplice-rmsyms)
139 endif # KSPLICE_STANDALONE