Skip to contentSkip to conversation

ARM: module: Add ".ref.text" to arm unwind tables

PATCH In review Vignesh Radhakrishnan 3 participants 6 messages May 13, 2015 – Jun 19, 2015 Arm (32-bit)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ARM: module: Add ".ref.text" to arm unwind tables

Functions inside kernel modules that use __ref
will end up being placed in .ARM.exidx.ref.text
section by gcc.

Currently we don't consider adding these functions to arm unwind tables.

Hence, if we turn slub debug on by default we end up with the messages of this sort:

unwind: Index not found bf0011e0

This is because slub debug saves stack trace of allocation's and free's. Therefore, we end up seeing a flood of these messages in dmesg since its not able to locate these functions.

Fix this by adding .ref.text section to arm unwind tables.

---
 arch/arm/include/asm/module.h | 1 +
 arch/arm/kernel/module.c      | 4 ++++
 2 files changed, 5 insertions(+)
arch/arm/include/asm/module.h +1 -0
index ed690c4..17640c9 100644
@@ -14,6 +14,7 @@ enum {
 	ARM_SEC_DEVEXIT,
 	ARM_SEC_HOT,
 	ARM_SEC_UNLIKELY,
+	ARM_SEC_REF,
 	ARM_SEC_MAX,
 };
 
arch/arm/kernel/module.c +4 -0
index 2e11961..846b888 100644
@@ -308,6 +308,8 @@ int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs,
 			maps[ARM_SEC_UNLIKELY].unw_sec = s;
 		else if (strcmp(".ARM.exidx.text.hot", secname) == 0)
 			maps[ARM_SEC_HOT].unw_sec = s;
+		else if (strcmp(".ARM.exidx.ref.text", secname) == 0)
+			maps[ARM_SEC_REF].unw_sec = s;
 		else if (strcmp(".init.text", secname) == 0)
 			maps[ARM_SEC_INIT].txt_sec = s;
 		else if (strcmp(".text", secname) == 0)
@@ -318,6 +320,8 @@ int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs,
 			maps[ARM_SEC_UNLIKELY].txt_sec = s;
 		else if (strcmp(".text.hot", secname) == 0)
 			maps[ARM_SEC_HOT].txt_sec = s;
+		else if (strcmp(".ref.text", secname) == 0)
+			maps[ARM_SEC_REF].txt_sec = s;
 	}
 
 	for (i = 0; i < ARM_SEC_MAX; i++)
Signature · 8 lines
1.8.2.1

-- 
Thanks and regards,
Vignesh Radhakrishnan

QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a
member of the Code Aurora Forum, hosted by The Linux Foundation.
Tested-by on v1 1/1
#1 lore raw
Quoted 10 lines · Vignesh Radhakrishnan

Functions inside kernel modules that use __ref will end up being placed in .ARM.exidx.ref.text section by gcc.

Currently we don't consider adding these functions to arm unwind tables.

Hence, if we turn slub debug on by default we end up with the messages of this sort:

Quoted 9 lines

unwind: Index not found bf0011e0

This is because slub debug saves stack trace of allocation's and free's. Therefore, we end up seeing a flood of these messages in dmesg since its not able to locate these functions.

Fix this by adding .ref.text section to arm unwind tables.

With this patch, I go from

  ------------[ cut here ]------------
WARNING: CPU: 0 PID: 63 at drivers/misc/test.c:12 that_function+0x10/0x2c [test]()
Modules linked in: test(P+)
CPU: 0 PID: 63 Comm: insmod Tainted: P                4.1.0-rc2+ #28
Hardware name: ARM-Versatile PB
[<c001a590>] (unwind_backtrace) from [<c0017b84>] (show_stack+0x10/0x14)
[<c0017b84>] (show_stack) from [<c0022370>] (warn_slowpath_common+0x78/0xb0)
[<c0022370>] (warn_slowpath_common) from [<c0022444>] (warn_slowpath_null+0x1c/0x24)
[<c0022444>] (warn_slowpath_null) from [<bf000048>] (that_function+0x10/0x2c [test])
unwind: Index not found bf000048
---[ end trace 3e24f8edd90f3b27 ]---

to

------------[ cut here ]------------
WARNING: CPU: 0 PID: 63 at drivers/misc/test.c:12 that_function+0x10/0x2c [test]()
Modules linked in: test(P+)
CPU: 0 PID: 63 Comm: insmod Tainted: P                4.1.0-rc2+ #30
Hardware name: ARM-Versatile PB
[<c001a5d0>] (unwind_backtrace) from [<c0017b84>] (show_stack+0x10/0x14)
[<c0017b84>] (show_stack) from [<c0022770>] (warn_slowpath_common+0x78/0xb0)
[<c0022770>] (warn_slowpath_common) from [<c0022844>] (warn_slowpath_null+0x1c/0x24)
[<c0022844>] (warn_slowpath_null) from [<bf000048>] (that_function+0x10/0x2c [test])
[<bf000048>] (that_function [test]) from [<bf002010>] (awesome_module+0x10/0x1c [test])
[<bf002010>] (awesome_module [test]) from [<c0009710>] (do_one_initcall+0x80/0x1dc)
[<c0009710>] (do_one_initcall) from [<c02d14e0>] (do_init_module+0x58/0x1a8)
[<c02d14e0>] (do_init_module) from [<c0063940>] (load_module+0x170c/0x1c38)
[<c0063940>] (load_module) from [<c0063f38>] (SyS_init_module+0xcc/0x124)
[<c0063f38>] (SyS_init_module) from [<c0014900>] (ret_fast_syscall+0x0/0x30)
---[ end trace 554c9ff461eb2505 ]---
Quoted 41 lines
---
  arch/arm/include/asm/module.h | 1 +
  arch/arm/kernel/module.c      | 4 ++++
  2 files changed, 5 insertions(+)
arch/arm/include/asm/module.h +1 -0
index ed690c4..17640c9 100644
@@ -14,6 +14,7 @@ enum {
  	ARM_SEC_DEVEXIT,
  	ARM_SEC_HOT,
  	ARM_SEC_UNLIKELY,
+	ARM_SEC_REF,
  	ARM_SEC_MAX,
  };
 
arch/arm/kernel/module.c +4 -0
index 2e11961..846b888 100644
@@ -308,6 +308,8 @@ int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs,
  			maps[ARM_SEC_UNLIKELY].unw_sec = s;
  		else if (strcmp(".ARM.exidx.text.hot", secname) == 0)
  			maps[ARM_SEC_HOT].unw_sec = s;
+		else if (strcmp(".ARM.exidx.ref.text", secname) == 0)
+			maps[ARM_SEC_REF].unw_sec = s;
  		else if (strcmp(".init.text", secname) == 0)
  			maps[ARM_SEC_INIT].txt_sec = s;
  		else if (strcmp(".text", secname) == 0)
@@ -318,6 +320,8 @@ int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs,
  			maps[ARM_SEC_UNLIKELY].txt_sec = s;
  		else if (strcmp(".text.hot", secname) == 0)
  			maps[ARM_SEC_HOT].txt_sec = s;
+		else if (strcmp(".ref.text", secname) == 0)
+			maps[ARM_SEC_REF].txt_sec = s;
  	}
 
  	for (i = 0; i < ARM_SEC_MAX; i++)
#2 lore raw

Forgot to add Maintainers. Adding them now.

Quoted 111 lines · Vignesh Radhakrishnan
Quoted 10 lines

Functions inside kernel modules that use __ref will end up being placed in .ARM.exidx.ref.text section by gcc.

Currently we don't consider adding these functions to arm unwind tables.

Hence, if we turn slub debug on by default we end up with the messages of this sort:

Quoted 9 lines

unwind: Index not found bf0011e0

This is because slub debug saves stack trace of allocation's and free's. Therefore, we end up seeing a flood of these messages in dmesg since its not able to locate these functions.

Fix this by adding .ref.text section to arm unwind tables.

With this patch, I go from

  ------------[ cut here ]------------
WARNING: CPU: 0 PID: 63 at drivers/misc/test.c:12 that_function+0x10/0x2c
[test]()
Modules linked in: test(P+)
CPU: 0 PID: 63 Comm: insmod Tainted: P                4.1.0-rc2+ #28
Hardware name: ARM-Versatile PB
[<c001a590>] (unwind_backtrace) from [<c0017b84>] (show_stack+0x10/0x14)

[<c0017b84>] (show_stack) from [<c0022370>] (warn_slowpath_common+0x78/0xb0)
[<c0022370>] (warn_slowpath_common) from [<c0022444>] (warn_slowpath_null+0x1c/0x24)
[<c0022444>] (warn_slowpath_null) from [<bf000048>] (that_function+0x10/0x2c [test])
unwind: Index not found bf000048

---[ end trace 3e24f8edd90f3b27 ]---

to

------------[ cut here ]------------
WARNING: CPU: 0 PID: 63 at drivers/misc/test.c:12 that_function+0x10/0x2c
[test]()
Modules linked in: test(P+)
CPU: 0 PID: 63 Comm: insmod Tainted: P                4.1.0-rc2+ #30
Hardware name: ARM-Versatile PB
[<c001a5d0>] (unwind_backtrace) from [<c0017b84>] (show_stack+0x10/0x14)

[<c0017b84>] (show_stack) from [<c0022770>] (warn_slowpath_common+0x78/0xb0)
[<c0022770>] (warn_slowpath_common) from [<c0022844>] (warn_slowpath_null+0x1c/0x24)
[<c0022844>] (warn_slowpath_null) from [<bf000048>] (that_function+0x10/0x2c [test])
[<bf000048>] (that_function [test]) from [<bf002010>] (awesome_module+0x10/0x1c [test])
[<bf002010>] (awesome_module [test]) from [<c0009710>] (do_one_initcall+0x80/0x1dc)
[<c0009710>] (do_one_initcall) from [<c02d14e0>] (do_init_module+0x58/0x1a8)
[<c02d14e0>] (do_init_module) from [<c0063940>] (load_module+0x170c/0x1c38)
[<c0063940>] (load_module) from [<c0063f38>] (SyS_init_module+0xcc/0x124) [<c0063f38>] (SyS_init_module) from [<c0014900>] (ret_fast_syscall+0x0/0x30)

---[ end trace 554c9ff461eb2505 ]---
Quoted 42 lines
---
  arch/arm/include/asm/module.h | 1 +
  arch/arm/kernel/module.c      | 4 ++++
  2 files changed, 5 insertions(+)
arch/arm/include/asm/module.h +1 -0
index ed690c4..17640c9 100644
@@ -14,6 +14,7 @@ enum {
  	ARM_SEC_DEVEXIT,
  	ARM_SEC_HOT,
  	ARM_SEC_UNLIKELY,
+	ARM_SEC_REF,
  	ARM_SEC_MAX,
  };
 
arch/arm/kernel/module.c +2 -0
index 2e11961..846b888 100644
@@ -308,6 +308,8 @@ int module_finalize(const Elf32_Ehdr *hdr, const
 Elf_Shdr *sechdrs,
  			maps[ARM_SEC_UNLIKELY].unw_sec = s;
  		else if (strcmp(".ARM.exidx.text.hot", secname) == 0)
  			maps[ARM_SEC_HOT].unw_sec = s;
+		else if (strcmp(".ARM.exidx.ref.text", secname) == 0)
+			maps[ARM_SEC_REF].unw_sec = s;
  		else if (strcmp(".init.text", secname) == 0)
  			maps[ARM_SEC_INIT].txt_sec = s;

else if (strcmp(".text", secname) == 0)

arch/arm/kernel/module.c +2 -0
@@ -318,6 +320,8 @@ int module_finalize(const Elf32_Ehdr *hdr, const
 Elf_Shdr *sechdrs,
  			maps[ARM_SEC_UNLIKELY].txt_sec = s;
  		else if (strcmp(".text.hot", secname) == 0)
  			maps[ARM_SEC_HOT].txt_sec = s;
+		else if (strcmp(".ref.text", secname) == 0)
+			maps[ARM_SEC_REF].txt_sec = s;
  	}
 
Quoted 4 lines
Quoted 2 lines

for (i = 0; i < ARM_SEC_MAX; i++)

QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation. again

#3 lore raw

Gentle reminder for review comments.

Quoted 132 lines

Forgot to add Maintainers. Adding them now.

Quoted 114 lines · Vignesh Radhakrishnan
Quoted 10 lines

Functions inside kernel modules that use __ref will end up being placed in .ARM.exidx.ref.text section by gcc.

Currently we don't consider adding these functions to arm unwind tables.

Hence, if we turn slub debug on by default we end up with the messages of this sort:

Quoted 9 lines

unwind: Index not found bf0011e0

This is because slub debug saves stack trace of allocation's and free's. Therefore, we end up seeing a flood of these messages in dmesg since its not able to locate these functions.

Fix this by adding .ref.text section to arm unwind tables.

With this patch, I go from

  ------------[ cut here ]------------
WARNING: CPU: 0 PID: 63 at drivers/misc/test.c:12
that_function+0x10/0x2c
[test]()
Modules linked in: test(P+)
CPU: 0 PID: 63 Comm: insmod Tainted: P                4.1.0-rc2+ #28
Hardware name: ARM-Versatile PB
[<c001a590>] (unwind_backtrace) from [<c0017b84>] (show_stack+0x10/0x14)

[<c0017b84>] (show_stack) from [<c0022370>] (warn_slowpath_common+0x78/0xb0)
[<c0022370>] (warn_slowpath_common) from [<c0022444>] (warn_slowpath_null+0x1c/0x24)
[<c0022444>] (warn_slowpath_null) from [<bf000048>] (that_function+0x10/0x2c [test])
unwind: Index not found bf000048

---[ end trace 3e24f8edd90f3b27 ]---

to

------------[ cut here ]------------
WARNING: CPU: 0 PID: 63 at drivers/misc/test.c:12
that_function+0x10/0x2c
[test]()
Modules linked in: test(P+)
CPU: 0 PID: 63 Comm: insmod Tainted: P                4.1.0-rc2+ #30
Hardware name: ARM-Versatile PB
[<c001a5d0>] (unwind_backtrace) from [<c0017b84>] (show_stack+0x10/0x14)

[<c0017b84>] (show_stack) from [<c0022770>] (warn_slowpath_common+0x78/0xb0)
[<c0022770>] (warn_slowpath_common) from [<c0022844>] (warn_slowpath_null+0x1c/0x24)
[<c0022844>] (warn_slowpath_null) from [<bf000048>] (that_function+0x10/0x2c [test])
[<bf000048>] (that_function [test]) from [<bf002010>] (awesome_module+0x10/0x1c [test]) [<bf002010>] (awesome_module [test]) from [<c0009710>] (do_one_initcall+0x80/0x1dc)
[<c0009710>] (do_one_initcall) from [<c02d14e0>] (do_init_module+0x58/0x1a8)
[<c02d14e0>] (do_init_module) from [<c0063940>] (load_module+0x170c/0x1c38)
[<c0063940>] (load_module) from [<c0063f38>] (SyS_init_module+0xcc/0x124)
[<c0063f38>] (SyS_init_module) from [<c0014900>] (ret_fast_syscall+0x0/0x30)

---[ end trace 554c9ff461eb2505 ]---
Quoted 42 lines
---
  arch/arm/include/asm/module.h | 1 +
  arch/arm/kernel/module.c      | 4 ++++
  2 files changed, 5 insertions(+)
arch/arm/include/asm/module.h +1 -0
index ed690c4..17640c9 100644
@@ -14,6 +14,7 @@ enum {
  	ARM_SEC_DEVEXIT,
  	ARM_SEC_HOT,
  	ARM_SEC_UNLIKELY,
+	ARM_SEC_REF,
  	ARM_SEC_MAX,
  };
 
arch/arm/kernel/module.c +2 -0
index 2e11961..846b888 100644
@@ -308,6 +308,8 @@ int module_finalize(const Elf32_Ehdr *hdr, const
 Elf_Shdr *sechdrs,
  			maps[ARM_SEC_UNLIKELY].unw_sec = s;
  		else if (strcmp(".ARM.exidx.text.hot", secname) == 0)
  			maps[ARM_SEC_HOT].unw_sec = s;
+		else if (strcmp(".ARM.exidx.ref.text", secname) == 0)
+			maps[ARM_SEC_REF].unw_sec = s;
  		else if (strcmp(".init.text", secname) == 0)
  			maps[ARM_SEC_INIT].txt_sec = s;

else if (strcmp(".text", secname) == 0)

arch/arm/kernel/module.c +2 -0
@@ -318,6 +320,8 @@ int module_finalize(const Elf32_Ehdr *hdr, const
 Elf_Shdr *sechdrs,
  			maps[ARM_SEC_UNLIKELY].txt_sec = s;
  		else if (strcmp(".text.hot", secname) == 0)
  			maps[ARM_SEC_HOT].txt_sec = s;
+		else if (strcmp(".ref.text", secname) == 0)
+			maps[ARM_SEC_REF].txt_sec = s;
  	}
 
Quoted 4 lines
Quoted 2 lines

for (i = 0; i < ARM_SEC_MAX; i++)

QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation. again

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

#4 lore raw
Quoted 1 line · vigneshr at codeaurora.org

Gentle reminder for review comments.

I don't see anything wrong with the patch... but it needs to find its way into the patch system to be applied, so it doesn't get forgotten. Please add it there along with Laura's attributation. Thanks.

Quoted 134 lines
Quoted 132 lines

Forgot to add Maintainers. Adding them now.

Quoted 114 lines · Vignesh Radhakrishnan
Quoted 10 lines

Functions inside kernel modules that use __ref will end up being placed in .ARM.exidx.ref.text section by gcc.

Currently we don't consider adding these functions to arm unwind tables.

Hence, if we turn slub debug on by default we end up with the messages of this sort:

Quoted 9 lines

unwind: Index not found bf0011e0

This is because slub debug saves stack trace of allocation's and free's. Therefore, we end up seeing a flood of these messages in dmesg since its not able to locate these functions.

Fix this by adding .ref.text section to arm unwind tables.

With this patch, I go from

  ------------[ cut here ]------------
WARNING: CPU: 0 PID: 63 at drivers/misc/test.c:12
that_function+0x10/0x2c
[test]()
Modules linked in: test(P+)
CPU: 0 PID: 63 Comm: insmod Tainted: P                4.1.0-rc2+ #28
Hardware name: ARM-Versatile PB
[<c001a590>] (unwind_backtrace) from [<c0017b84>] (show_stack+0x10/0x14)

[<c0017b84>] (show_stack) from [<c0022370>] (warn_slowpath_common+0x78/0xb0)
[<c0022370>] (warn_slowpath_common) from [<c0022444>] (warn_slowpath_null+0x1c/0x24)
[<c0022444>] (warn_slowpath_null) from [<bf000048>] (that_function+0x10/0x2c [test])
unwind: Index not found bf000048

---[ end trace 3e24f8edd90f3b27 ]---

to

------------[ cut here ]------------
WARNING: CPU: 0 PID: 63 at drivers/misc/test.c:12
that_function+0x10/0x2c
[test]()
Modules linked in: test(P+)
CPU: 0 PID: 63 Comm: insmod Tainted: P                4.1.0-rc2+ #30
Hardware name: ARM-Versatile PB
[<c001a5d0>] (unwind_backtrace) from [<c0017b84>] (show_stack+0x10/0x14)

[<c0017b84>] (show_stack) from [<c0022770>] (warn_slowpath_common+0x78/0xb0)
[<c0022770>] (warn_slowpath_common) from [<c0022844>] (warn_slowpath_null+0x1c/0x24)
[<c0022844>] (warn_slowpath_null) from [<bf000048>] (that_function+0x10/0x2c [test])
[<bf000048>] (that_function [test]) from [<bf002010>] (awesome_module+0x10/0x1c [test]) [<bf002010>] (awesome_module [test]) from [<c0009710>] (do_one_initcall+0x80/0x1dc)
[<c0009710>] (do_one_initcall) from [<c02d14e0>] (do_init_module+0x58/0x1a8)
[<c02d14e0>] (do_init_module) from [<c0063940>] (load_module+0x170c/0x1c38)
[<c0063940>] (load_module) from [<c0063f38>] (SyS_init_module+0xcc/0x124)
[<c0063f38>] (SyS_init_module) from [<c0014900>] (ret_fast_syscall+0x0/0x30)

---[ end trace 554c9ff461eb2505 ]---
Quoted 42 lines
---
  arch/arm/include/asm/module.h | 1 +
  arch/arm/kernel/module.c      | 4 ++++
  2 files changed, 5 insertions(+)
arch/arm/include/asm/module.h +1 -0
index ed690c4..17640c9 100644
@@ -14,6 +14,7 @@ enum {
  	ARM_SEC_DEVEXIT,
  	ARM_SEC_HOT,
  	ARM_SEC_UNLIKELY,
+	ARM_SEC_REF,
  	ARM_SEC_MAX,
  };
 
arch/arm/kernel/module.c +2 -0
index 2e11961..846b888 100644
@@ -308,6 +308,8 @@ int module_finalize(const Elf32_Ehdr *hdr, const
 Elf_Shdr *sechdrs,
  			maps[ARM_SEC_UNLIKELY].unw_sec = s;
  		else if (strcmp(".ARM.exidx.text.hot", secname) == 0)
  			maps[ARM_SEC_HOT].unw_sec = s;
+		else if (strcmp(".ARM.exidx.ref.text", secname) == 0)
+			maps[ARM_SEC_REF].unw_sec = s;
  		else if (strcmp(".init.text", secname) == 0)
  			maps[ARM_SEC_INIT].txt_sec = s;

else if (strcmp(".text", secname) == 0)

arch/arm/kernel/module.c +2 -0
@@ -318,6 +320,8 @@ int module_finalize(const Elf32_Ehdr *hdr, const
 Elf_Shdr *sechdrs,
  			maps[ARM_SEC_UNLIKELY].txt_sec = s;
  		else if (strcmp(".text.hot", secname) == 0)
  			maps[ARM_SEC_HOT].txt_sec = s;
+		else if (strcmp(".ref.text", secname) == 0)
+			maps[ARM_SEC_REF].txt_sec = s;
  	}
 
Quoted 4 lines
Quoted 2 lines

for (i = 0; i < ARM_SEC_MAX; i++)

QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation. again

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Signature · 2 lines
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.
#5 lore raw

PATCH 1/1 ARM: module: Add ".ref.text" to arm unwind tables

Functions inside kernel modules that use __ref
will end up being placed in .ARM.exidx.ref.text
section by gcc.

Currently we don't consider adding these functions to arm unwind tables.

Hence, if we turn slub debug on by default we end up with the messages of this sort:

unwind: Index not found bf0011e0

This is because slub debug saves stack trace of allocation's and free's. Therefore, we end up seeing a flood of these messages in dmesg since its not able to locate these functions.

Fix this by adding .ref.text section to arm unwind tables.

CC Russell King <[email protected]>
CC Andrew Morton <[email protected]>
CC Laura Abbott <[email protected]>
CC Andrey Ryabinin <[email protected]>
CC Andrey Konovalov <[email protected]>
---
 arch/arm/include/asm/module.h | 1 +
 arch/arm/kernel/module.c      | 4 ++++
 2 files changed, 5 insertions(+)
arch/arm/include/asm/module.h +1 -0
index ed690c4..17640c9 100644
@@ -14,6 +14,7 @@ enum {
 	ARM_SEC_DEVEXIT,
 	ARM_SEC_HOT,
 	ARM_SEC_UNLIKELY,
+	ARM_SEC_REF,
 	ARM_SEC_MAX,
 };
 
arch/arm/kernel/module.c +4 -0
index 2e11961..846b888 100644
@@ -308,6 +308,8 @@ int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs,
 			maps[ARM_SEC_UNLIKELY].unw_sec = s;
 		else if (strcmp(".ARM.exidx.text.hot", secname) == 0)
 			maps[ARM_SEC_HOT].unw_sec = s;
+		else if (strcmp(".ARM.exidx.ref.text", secname) == 0)
+			maps[ARM_SEC_REF].unw_sec = s;
 		else if (strcmp(".init.text", secname) == 0)
 			maps[ARM_SEC_INIT].txt_sec = s;
 		else if (strcmp(".text", secname) == 0)
@@ -318,6 +320,8 @@ int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs,
 			maps[ARM_SEC_UNLIKELY].txt_sec = s;
 		else if (strcmp(".text.hot", secname) == 0)
 			maps[ARM_SEC_HOT].txt_sec = s;
+		else if (strcmp(".ref.text", secname) == 0)
+			maps[ARM_SEC_REF].txt_sec = s;
 	}
 
 	for (i = 0; i < ARM_SEC_MAX; i++)
Signature · 8 lines
1.8.2.1

-- 
Thanks and regards,
Vignesh Radhakrishnan

QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a
member of the Code Aurora Forum, hosted by The Linux Foundation.