commit e9e08a07385e08f1a7f85c5d1e345c21c9564963 upstream.
With CONFIG_LKDTM=y and make OBJCOPY=llvm-objcopy, llvm-objcopy errors:
llvm-objcopy: error: --set-section-flags=.text conflicts with
--rename-section=.text=.rodata
Rather than support setting flags then renaming sections vs renaming
then setting flags, it's simpler to just change both at the same time
via --rename-section. Adding the load flag is required for GNU objcopy
to mark .rodata Type as PROGBITS after the rename.
This can be verified with:
$ readelf -S drivers/misc/lkdtm/rodata_objcopy.o
...
Section Headers:
[Nr] Name Type Address Offset
Size EntSize Flags Link Info Align
...
[ 1] .rodata PROGBITS 0000000000000000 00000040
0000000000000004 0000000000000000 A 0 0 4
...
Which shows that .text is now renamed .rodata, the alloc flag A is set,
the type is PROGBITS, and the section is not flagged as writeable W.
Cc: stable@vger.kernel.org
Link: https://sourceware.org/bugzilla/show_bug.cgi?id=24554
Link: https://github.com/ClangBuiltLinux/linux/issues/448
Reported-by: Nathan Chancellor <natechancellor@gmail.com>
Suggested-by: Alan Modra <amodra@gmail.com>
Suggested-by: Jordan Rupprect <rupprecht@google.com>
Suggested-by: Kees Cook <keescook@chromium.org>
Acked-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Change-Id: I1a3d5129e96e909e6d3751752a0bf474474664d9
99 lines
3.4 KiB
Makefile
99 lines
3.4 KiB
Makefile
#
|
|
# Makefile for misc devices that really don't fit anywhere else.
|
|
#
|
|
|
|
obj-$(CONFIG_IBM_ASM) += ibmasm/
|
|
obj-$(CONFIG_AD525X_DPOT) += ad525x_dpot.o
|
|
obj-$(CONFIG_AD525X_DPOT_I2C) += ad525x_dpot-i2c.o
|
|
obj-$(CONFIG_AD525X_DPOT_SPI) += ad525x_dpot-spi.o
|
|
obj-$(CONFIG_INTEL_MID_PTI) += pti.o
|
|
obj-$(CONFIG_ATMEL_SSC) += atmel-ssc.o
|
|
obj-$(CONFIG_ATMEL_TCLIB) += atmel_tclib.o
|
|
obj-$(CONFIG_DUMMY_IRQ) += dummy-irq.o
|
|
obj-$(CONFIG_ICS932S401) += ics932s401.o
|
|
obj-$(CONFIG_LKDTM) += lkdtm.o
|
|
obj-$(CONFIG_TIFM_CORE) += tifm_core.o
|
|
obj-$(CONFIG_TIFM_7XX1) += tifm_7xx1.o
|
|
obj-$(CONFIG_PHANTOM) += phantom.o
|
|
obj-$(CONFIG_QCOM_COINCELL) += qcom-coincell.o
|
|
obj-$(CONFIG_SENSORS_BH1770) += bh1770glc.o
|
|
obj-$(CONFIG_SENSORS_APDS990X) += apds990x.o
|
|
obj-$(CONFIG_SGI_IOC4) += ioc4.o
|
|
obj-$(CONFIG_ENCLOSURE_SERVICES) += enclosure.o
|
|
obj-$(CONFIG_KGDB_TESTS) += kgdbts.o
|
|
obj-$(CONFIG_SGI_XP) += sgi-xp/
|
|
obj-$(CONFIG_SGI_GRU) += sgi-gru/
|
|
obj-$(CONFIG_CS5535_MFGPT) += cs5535-mfgpt.o
|
|
obj-$(CONFIG_HP_ILO) += hpilo.o
|
|
obj-$(CONFIG_APDS9802ALS) += apds9802als.o
|
|
obj-$(CONFIG_ISL29003) += isl29003.o
|
|
obj-$(CONFIG_ISL29020) += isl29020.o
|
|
obj-$(CONFIG_SENSORS_TSL2550) += tsl2550.o
|
|
obj-$(CONFIG_DS1682) += ds1682.o
|
|
obj-$(CONFIG_TI_DAC7512) += ti_dac7512.o
|
|
obj-$(CONFIG_C2PORT) += c2port/
|
|
obj-$(CONFIG_HMC6352) += hmc6352.o
|
|
obj-$(CONFIG_CS40L2X_HAPTIC) += cs40l2x.o cs40l2x-tables.o
|
|
obj-y += eeprom/
|
|
obj-y += cb710/
|
|
obj-$(CONFIG_SPEAR13XX_PCIE_GADGET) += spear13xx_pcie_gadget.o
|
|
obj-$(CONFIG_VMWARE_BALLOON) += vmw_balloon.o
|
|
obj-$(CONFIG_ARM_CHARLCD) += arm-charlcd.o
|
|
obj-$(CONFIG_PCH_PHUB) += pch_phub.o
|
|
obj-y += ti-st/
|
|
obj-y += lis3lv02d/
|
|
obj-$(CONFIG_USB_SWITCH_FSA9480) += fsa9480.o
|
|
obj-$(CONFIG_ALTERA_STAPL) +=altera-stapl/
|
|
obj-$(CONFIG_INTEL_MEI) += mei/
|
|
obj-$(CONFIG_VMWARE_VMCI) += vmw_vmci/
|
|
obj-$(CONFIG_LATTICE_ECP3_CONFIG) += lattice-ecp3-config.o
|
|
obj-$(CONFIG_SRAM) += sram.o
|
|
obj-y += mic/
|
|
obj-$(CONFIG_GENWQE) += genwqe/
|
|
obj-$(CONFIG_HDCP_QSEECOM) += hdcp_qseecom.o
|
|
obj-$(CONFIG_HDCP_QSEECOM) += msm_hdcp.o
|
|
obj-$(CONFIG_QSEECOM) += qseecom.o
|
|
obj-$(CONFIG_ECHO) += echo/
|
|
obj-$(CONFIG_VEXPRESS_SYSCFG) += vexpress-syscfg.o
|
|
obj-$(CONFIG_CXL_BASE) += cxl/
|
|
obj-$(CONFIG_PANEL) += panel.o
|
|
obj-$(CONFIG_QPNP_MISC) += qpnp-misc.o
|
|
obj-$(CONFIG_MEMORY_STATE_TIME) += memory_state_time.o
|
|
|
|
obj-$(CONFIG_UID_SYS_STATS) += uid_sys_stats.o
|
|
obj-$(CONFIG_MEMORY_STATE_TIME) += memory_state_time.o
|
|
|
|
obj-$(CONFIG_NFC_ST21NFC) += st21nfc.o
|
|
|
|
obj-$(CONFIG_CITADEL) += citadel-spi.o
|
|
|
|
lkdtm-$(CONFIG_LKDTM) += lkdtm_core.o
|
|
lkdtm-$(CONFIG_LKDTM) += lkdtm_bugs.o
|
|
lkdtm-$(CONFIG_LKDTM) += lkdtm_heap.o
|
|
lkdtm-$(CONFIG_LKDTM) += lkdtm_perms.o
|
|
lkdtm-$(CONFIG_LKDTM) += lkdtm_rodata_objcopy.o
|
|
lkdtm-$(CONFIG_LKDTM) += lkdtm_usercopy.o
|
|
|
|
obj-y += mnh/
|
|
obj-$(CONFIG_GOOGLE_EASEL) += google-easel.o
|
|
google-easel-objs += google-easel-comm.o google-easel-comm-dma.o google-easel-comm-hw.o
|
|
|
|
obj-y += st33/
|
|
obj-$(CONFIG_ACCESS_RAMOOPS) += access_ramoops.o
|
|
CFLAGS_lkdtm_rodata.o += $(DISABLE_LTO)
|
|
KCOV_INSTRUMENT_lkdtm_rodata.o := n
|
|
|
|
OBJCOPYFLAGS :=
|
|
OBJCOPYFLAGS_lkdtm_rodata_objcopy.o := \
|
|
--rename-section .text=.rodata,alloc,readonly,load
|
|
targets += lkdtm_rodata.o lkdtm_rodata_objcopy.o
|
|
$(obj)/lkdtm_rodata_objcopy.o: $(obj)/lkdtm_rodata.o FORCE
|
|
$(call if_changed,objcopy)
|
|
|
|
# TODO: remove me b/62058353
|
|
subdir-ccflags-y += \
|
|
-Wno-header-guard \
|
|
-Wno-ignored-attributes \
|
|
|
|
obj-$(CONFIG_SYSTRACE) += systrace.o
|