mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-28 23:34:53 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Awk
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Awk
		
	
	
	
	
	
| # This is an awk script to process the output of elf/check-localplt.
 | |
| # The first file argument is the file of expected results.
 | |
| # Each line is either a comment starting with # or it looks like:
 | |
| #	libfoo.so: function
 | |
| # or
 | |
| #	libfoo.so: function ?
 | |
| # The latter means that a PLT entry for function is optional in libfoo.so.
 | |
| # The former means one is required.
 | |
| # The second file argument is - and this (stdin) receives the output
 | |
| # of the check-localplt program.
 | |
| 
 | |
| BEGIN { result = 0 }
 | |
| 
 | |
| FILENAME != "-" && /^#/ { next }
 | |
| 
 | |
| FILENAME != "-" {
 | |
|   if (NF != 2 && !(NF == 3 && $3 == "?")) {
 | |
|     printf "%s:%d: bad data line: %s\n", FILENAME, FNR, $0 > "/dev/stderr";
 | |
|     result = 2;
 | |
|   } else {
 | |
|     accept[$1 " " $2] = NF == 2;
 | |
|   }
 | |
|   next;
 | |
| }
 | |
| 
 | |
| NF != 2 {
 | |
|   print "Unexpected output from check-localplt:", $0 > "/dev/stderr";
 | |
|   result = 2;
 | |
|   next
 | |
| }
 | |
| 
 | |
| {
 | |
|   key = $1 " " $2
 | |
|   if (key in accept) {
 | |
|     delete accept[key]
 | |
|   } else {
 | |
|     print "Extra PLT reference:", $0;
 | |
|     if (result == 0)
 | |
|       result = 1;
 | |
|   }
 | |
| }
 | |
| 
 | |
| END {
 | |
|   for (key in accept) {
 | |
|     if (accept[key]) {
 | |
|       # It's mandatory.
 | |
|       print "Missing required PLT reference:", key;
 | |
|       result = 1;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   exit(result);
 | |
| }
 |