mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	kbuild: fix asm-offset generation to work with clang
KBuild abuses the asm statement to write to a file and clang chokes about these invalid asm statements. Hack it even more by fooling this is actual valid asm code. [masahiro: Import Jeroen's work for U-Boot: http://patchwork.ozlabs.org/patch/375026/ Tweak sed script a little to avoid garbage '#' for GCC case, like #define NR_PAGEFLAGS 23 /* __NR_PAGEFLAGS # */ ] Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Matthias Kaehlcke <mka@chromium.org> Tested-by: Matthias Kaehlcke <mka@chromium.org>
This commit is contained in:
		
							parent
							
								
									7dd47b95b0
								
							
						
					
					
						commit
						cf0c3e68aa
					
				
					 2 changed files with 9 additions and 5 deletions
				
			
		|  | @ -2,14 +2,14 @@ | |||
| #define __LINUX_KBUILD_H | ||||
| 
 | ||||
| #define DEFINE(sym, val) \ | ||||
|         asm volatile("\n->" #sym " %0 " #val : : "i" (val)) | ||||
| 	asm volatile("\n.ascii \"->" #sym " %0 " #val "\"" : : "i" (val)) | ||||
| 
 | ||||
| #define BLANK() asm volatile("\n->" : : ) | ||||
| #define BLANK() asm volatile("\n.ascii \"->\"" : : ) | ||||
| 
 | ||||
| #define OFFSET(sym, str, mem) \ | ||||
| 	DEFINE(sym, offsetof(struct str, mem)) | ||||
| 
 | ||||
| #define COMMENT(x) \ | ||||
| 	asm volatile("\n->#" x) | ||||
| 	asm volatile("\n.ascii \"->#" x "\"") | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -413,10 +413,14 @@ cmd_xzmisc = (cat $(filter-out FORCE,$^) | \ | |||
| # --------------------------------------------------------------------------- | ||||
| 
 | ||||
| # Default sed regexp - multiline due to syntax constraints | ||||
| # | ||||
| # Use [:space:] because LLVM's integrated assembler inserts <tab> around | ||||
| # the .ascii directive whereas GCC keeps the <space> as-is. | ||||
| define sed-offsets | ||||
| 	"/^->/{s:->#\(.*\):/* \1 */:; \ | ||||
| 	's:^[[:space:]]*\.ascii[[:space:]]*"\(.*\)".*:\1:; \ | ||||
| 	/^->/{s:->#\(.*\):/* \1 */:; \ | ||||
| 	s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \ | ||||
| 	s:->::; p;}" | ||||
| 	s:->::; p;}' | ||||
| endef | ||||
| 
 | ||||
| # Use filechk to avoid rebuilds when a header changes, but the resulting file | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Jeroen Hofstee
						Jeroen Hofstee