aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/mod
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/mod')
-rw-r--r--scripts/mod/file2alias.c4
-rw-r--r--scripts/mod/modpost.c21
2 files changed, 21 insertions, 4 deletions
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index 23708636b05c..25e5cb0aaef6 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -210,8 +210,8 @@ static void do_usb_entry(void *symval,
210 range_lo < 0x9 ? "[%X-9" : "[%X", 210 range_lo < 0x9 ? "[%X-9" : "[%X",
211 range_lo); 211 range_lo);
212 sprintf(alias + strlen(alias), 212 sprintf(alias + strlen(alias),
213 range_hi > 0xA ? "a-%X]" : "%X]", 213 range_hi > 0xA ? "A-%X]" : "%X]",
214 range_lo); 214 range_hi);
215 } 215 }
216 } 216 }
217 if (bcdDevice_initial_digits < (sizeof(bcdDevice_lo) * 2 - 1)) 217 if (bcdDevice_initial_digits < (sizeof(bcdDevice_lo) * 2 - 1))
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 17855761e6b7..99a45fdc1bbf 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -584,12 +584,16 @@ static int ignore_undef_symbol(struct elf_info *info, const char *symname)
584 if (strncmp(symname, "_restgpr_", sizeof("_restgpr_") - 1) == 0 || 584 if (strncmp(symname, "_restgpr_", sizeof("_restgpr_") - 1) == 0 ||
585 strncmp(symname, "_savegpr_", sizeof("_savegpr_") - 1) == 0 || 585 strncmp(symname, "_savegpr_", sizeof("_savegpr_") - 1) == 0 ||
586 strncmp(symname, "_rest32gpr_", sizeof("_rest32gpr_") - 1) == 0 || 586 strncmp(symname, "_rest32gpr_", sizeof("_rest32gpr_") - 1) == 0 ||
587 strncmp(symname, "_save32gpr_", sizeof("_save32gpr_") - 1) == 0) 587 strncmp(symname, "_save32gpr_", sizeof("_save32gpr_") - 1) == 0 ||
588 strncmp(symname, "_restvr_", sizeof("_restvr_") - 1) == 0 ||
589 strncmp(symname, "_savevr_", sizeof("_savevr_") - 1) == 0)
588 return 1; 590 return 1;
589 if (info->hdr->e_machine == EM_PPC64) 591 if (info->hdr->e_machine == EM_PPC64)
590 /* Special register function linked on all modules during final link of .ko */ 592 /* Special register function linked on all modules during final link of .ko */
591 if (strncmp(symname, "_restgpr0_", sizeof("_restgpr0_") - 1) == 0 || 593 if (strncmp(symname, "_restgpr0_", sizeof("_restgpr0_") - 1) == 0 ||
592 strncmp(symname, "_savegpr0_", sizeof("_savegpr0_") - 1) == 0) 594 strncmp(symname, "_savegpr0_", sizeof("_savegpr0_") - 1) == 0 ||
595 strncmp(symname, "_restvr_", sizeof("_restvr_") - 1) == 0 ||
596 strncmp(symname, "_savevr_", sizeof("_savevr_") - 1) == 0)
593 return 1; 597 return 1;
594 /* Do not ignore this symbol */ 598 /* Do not ignore this symbol */
595 return 0; 599 return 0;
@@ -1498,6 +1502,16 @@ static int addend_386_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
1498#define R_ARM_JUMP24 29 1502#define R_ARM_JUMP24 29
1499#endif 1503#endif
1500 1504
1505#ifndef R_ARM_THM_CALL
1506#define R_ARM_THM_CALL 10
1507#endif
1508#ifndef R_ARM_THM_JUMP24
1509#define R_ARM_THM_JUMP24 30
1510#endif
1511#ifndef R_ARM_THM_JUMP19
1512#define R_ARM_THM_JUMP19 51
1513#endif
1514
1501static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r) 1515static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
1502{ 1516{
1503 unsigned int r_typ = ELF_R_TYPE(r->r_info); 1517 unsigned int r_typ = ELF_R_TYPE(r->r_info);
@@ -1511,6 +1525,9 @@ static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
1511 case R_ARM_PC24: 1525 case R_ARM_PC24:
1512 case R_ARM_CALL: 1526 case R_ARM_CALL:
1513 case R_ARM_JUMP24: 1527 case R_ARM_JUMP24:
1528 case R_ARM_THM_CALL:
1529 case R_ARM_THM_JUMP24:
1530 case R_ARM_THM_JUMP19:
1514 /* From ARM ABI: ((S + A) | T) - P */ 1531 /* From ARM ABI: ((S + A) | T) - P */
1515 r->r_addend = (int)(long)(elf->hdr + 1532 r->r_addend = (int)(long)(elf->hdr +
1516 sechdr->sh_offset + 1533 sechdr->sh_offset +