mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	ARM: 7964/1: Detect section mismatches in thumb relocations
Add processing for normally encountered thumb relocation types so that section mismatches will be detected. Comment from Rusty Russell follows: Happiest for this to go through an ARM tree, so: Signed-off-by: David A. Long <dave.long@linaro.org> Acked-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
		
							parent
							
								
									cd91b2fecf
								
							
						
					
					
						commit
						c9698e5cd6
					
				
					 1 changed files with 13 additions and 0 deletions
				
			
		| 
						 | 
					@ -1502,6 +1502,16 @@ static int addend_386_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
 | 
				
			||||||
#define R_ARM_JUMP24	29
 | 
					#define R_ARM_JUMP24	29
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef	R_ARM_THM_CALL
 | 
				
			||||||
 | 
					#define	R_ARM_THM_CALL		10
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef	R_ARM_THM_JUMP24
 | 
				
			||||||
 | 
					#define	R_ARM_THM_JUMP24	30
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef	R_ARM_THM_JUMP19
 | 
				
			||||||
 | 
					#define	R_ARM_THM_JUMP19	51
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
 | 
					static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	unsigned int r_typ = ELF_R_TYPE(r->r_info);
 | 
						unsigned int r_typ = ELF_R_TYPE(r->r_info);
 | 
				
			||||||
| 
						 | 
					@ -1515,6 +1525,9 @@ static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
 | 
				
			||||||
	case R_ARM_PC24:
 | 
						case R_ARM_PC24:
 | 
				
			||||||
	case R_ARM_CALL:
 | 
						case R_ARM_CALL:
 | 
				
			||||||
	case R_ARM_JUMP24:
 | 
						case R_ARM_JUMP24:
 | 
				
			||||||
 | 
						case R_ARM_THM_CALL:
 | 
				
			||||||
 | 
						case R_ARM_THM_JUMP24:
 | 
				
			||||||
 | 
						case R_ARM_THM_JUMP19:
 | 
				
			||||||
		/* From ARM ABI: ((S + A) | T) - P */
 | 
							/* From ARM ABI: ((S + A) | T) - P */
 | 
				
			||||||
		r->r_addend = (int)(long)(elf->hdr +
 | 
							r->r_addend = (int)(long)(elf->hdr +
 | 
				
			||||||
		              sechdr->sh_offset +
 | 
							              sechdr->sh_offset +
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue