SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Elf文件解析
目标文件格式
Elf文件头
大端小端

Inter




               摩托罗拉
节头结构
字符串表
符号表项
重定位项结构
1. Upload Sky shell with 'exec' command and symbols (requires
several recompilations to generate correct symbols):
> make sky-shell-exec.sky                             编译内核

> make sky-shell-exec.sky CORE=sky-shell-exec.sky     生成symbols

> make sky-shell-exec.upload CORE=sky-shell-exec.sky 再次编译内核

如果直接执行第二条命令,可以生成sky-shell-exec.sky ,
symbols为空,
Symbols怎么生成
• Makefile.msp430中
ifdef CORE
symbols.c:
#        @${CONTIKI}/tools/msp430-make-symbols $(CORE)
         $(NM) $(CORE) | awk -f $(CONTIKI)/tools/mknmlist > symbols.c
else
symbols.c symbols.h:
         @${CONTIKI}/tools/make-empty-symbols
Endif
命令
• Msp430-nm - list symbols from object files
• awk [options] -f scriptfile var=value file(s)
awk是一种编程语言,用于在linux/unix下对文本和数据进
行处理。数据可以来自标准输入、一个或多个文件,或其
它命令的输出。它支持用户自定义函数和动态正则表达式
等先进功能,是linux/unix下的一个强大编程工具。它在命
令行中使用,但更多是作为脚本来使用。awk的处理文本
和数据的方式是这样的,它逐行扫描文件,从第一行到最
后一行,寻找匹配的特定模式的行,并在这些行上进行你
想要的操作。如果没有指定处理动作,则把匹配的行显示
到标准输出(屏幕),如果没有指定模式,则所有被操作所
指定的行都被处理。
mknmlist                                                      /^[0123456789abcdef]+ [ABCDGRSTUVW] / {
                                                                if ($3 != "symbols" && $3 != "symbols_nelts") {
                                                                  name[nname] = $3;
                                                                  nname++;
function sort(V, N,                      tmp, i, j) {
                                                                }
  V[-1] = ""; # Used as a sentinel before V[0].
                                                              }
  for (i = 1; i < N; i++)
   for (j = i; V[j - 1] > V[j]; j--) {
                                                              END {
     tmp = V[j];
                                                               sort(name, nname);
     V[j] = V[j - 1];
     V[j - 1] = tmp;
   }                                                              print "#include "loader/symbols.h"n";
  return;
}                                                                 # Must deal with compiler builtins etc.
                                                                  for (x = 0; x < nname; x++) {
BEGIN {                                                             if (builtin[name[x]] != "")
 nname = 0;                                                           print builtin[name[x]] ";";
 builtin["printf"] =       "int printf(const char *, ...)";         else
 builtin["sprintf"] =      "int sprintf(char *, const                 print "extern int " name[x]"();";
char *, ...)";                                                    }
 builtin["malloc"] =       "void *malloc()";                      print "n";
 builtin["calloc"] =       "void *calloc()";
 builtin["memcpy"] =       "void *memcpy()";                      # nname++: An { 0, 0 } entry is added at the end of the vector.
 builtin["memset"] =       "void *memset()";                      print "const int symbols_nelts = " nname+1 ";";
 builtin["memmove"] =      "void *memmove()";                     print "const struct symbols symbols[" nname+1 "] = {";
 builtin["strcpy"] =       "char *strcpy()";                      for (x = 0; x < nname; x++)
 builtin["strchr"] =       "char *strchr()";                       print "{ "" name[x] "", (void *)&"name[x]" },";
 builtin[""] =             "";                                    print "{ (const char *)0, (void *)0} };";
}                                                             }

Weitere ähnliche Inhalte

Was ist angesagt?

Mouse programming in c
Mouse programming in cMouse programming in c
Mouse programming in c
gkgaur1987
 
C Sharp Lecture Johan Franzen
C Sharp Lecture  Johan FranzenC Sharp Lecture  Johan Franzen
C Sharp Lecture Johan Franzen
g_hemanth17
 
basic programs in C++
basic programs in C++ basic programs in C++
basic programs in C++
Arun Nair
 

Was ist angesagt? (20)

Mouse programming in c
Mouse programming in cMouse programming in c
Mouse programming in c
 
Bcsl 033 data and file structures lab s2-3
Bcsl 033 data and file structures lab s2-3Bcsl 033 data and file structures lab s2-3
Bcsl 033 data and file structures lab s2-3
 
Oopsprc1c
Oopsprc1cOopsprc1c
Oopsprc1c
 
New presentation oop
New presentation oopNew presentation oop
New presentation oop
 
Linked list int_data_fdata
Linked list int_data_fdataLinked list int_data_fdata
Linked list int_data_fdata
 
C Sharp Lecture Johan Franzen
C Sharp Lecture  Johan FranzenC Sharp Lecture  Johan Franzen
C Sharp Lecture Johan Franzen
 
C++ programs
C++ programsC++ programs
C++ programs
 
Linked list imp of list
Linked list imp of listLinked list imp of list
Linked list imp of list
 
Desymfony2013.gonzalo123
Desymfony2013.gonzalo123Desymfony2013.gonzalo123
Desymfony2013.gonzalo123
 
basic programs in C++
basic programs in C++ basic programs in C++
basic programs in C++
 
Bcsl 033 data and file structures lab s2-2
Bcsl 033 data and file structures lab s2-2Bcsl 033 data and file structures lab s2-2
Bcsl 033 data and file structures lab s2-2
 
Pratik Bakane C++
Pratik Bakane C++Pratik Bakane C++
Pratik Bakane C++
 
week-17x
week-17xweek-17x
week-17x
 
cosc 281 hw2
cosc 281 hw2cosc 281 hw2
cosc 281 hw2
 
oop Lecture 4
oop Lecture 4oop Lecture 4
oop Lecture 4
 
String Manipulation Function and Header File Functions
String Manipulation Function and Header File FunctionsString Manipulation Function and Header File Functions
String Manipulation Function and Header File Functions
 
Bcsl 033 data and file structures lab s3-3
Bcsl 033 data and file structures lab s3-3Bcsl 033 data and file structures lab s3-3
Bcsl 033 data and file structures lab s3-3
 
Understanding storage class using nm
Understanding storage class using nmUnderstanding storage class using nm
Understanding storage class using nm
 
Stack array
Stack arrayStack array
Stack array
 
Bcsl 033 data and file structures lab s4-2
Bcsl 033 data and file structures lab s4-2Bcsl 033 data and file structures lab s4-2
Bcsl 033 data and file structures lab s4-2
 

Andere mochten auch

Ivv workshop model-based-testing-of-nasa-systems
Ivv workshop model-based-testing-of-nasa-systemsIvv workshop model-based-testing-of-nasa-systems
Ivv workshop model-based-testing-of-nasa-systems
Dharmalingam Ganesan
 
Assessing Model-Based Testing: An Empirical Study Conducted in Industry
Assessing Model-Based Testing: An Empirical Study Conducted in IndustryAssessing Model-Based Testing: An Empirical Study Conducted in Industry
Assessing Model-Based Testing: An Empirical Study Conducted in Industry
Dharmalingam Ganesan
 
Automated testing of NASA Software - part 2
Automated testing of NASA Software - part 2Automated testing of NASA Software - part 2
Automated testing of NASA Software - part 2
Dharmalingam Ganesan
 
Reverse Architecting of a Medical Device Software
Reverse Architecting of a Medical Device SoftwareReverse Architecting of a Medical Device Software
Reverse Architecting of a Medical Device Software
Dharmalingam Ganesan
 
Interface-Implementation Contract Checking
Interface-Implementation Contract CheckingInterface-Implementation Contract Checking
Interface-Implementation Contract Checking
Dharmalingam Ganesan
 
Verifying Architectural Design Rules of a Flight Software Product Line
Verifying Architectural Design Rules of a Flight Software Product LineVerifying Architectural Design Rules of a Flight Software Product Line
Verifying Architectural Design Rules of a Flight Software Product Line
Dharmalingam Ganesan
 
Reverse Engineering of Software Architecture
Reverse Engineering of Software ArchitectureReverse Engineering of Software Architecture
Reverse Engineering of Software Architecture
Dharmalingam Ganesan
 
Model-based Testing using Microsoft’s Spec Explorer Tool: A Case Study
Model-based Testing using Microsoft’s Spec Explorer Tool: A Case StudyModel-based Testing using Microsoft’s Spec Explorer Tool: A Case Study
Model-based Testing using Microsoft’s Spec Explorer Tool: A Case Study
Dharmalingam Ganesan
 
LD_PRELOAD Exploitation - DC9723
LD_PRELOAD Exploitation - DC9723LD_PRELOAD Exploitation - DC9723
LD_PRELOAD Exploitation - DC9723
Iftach Ian Amit
 

Andere mochten auch (18)

Explaining my Phd Thesis to layman
Explaining my Phd Thesis to laymanExplaining my Phd Thesis to layman
Explaining my Phd Thesis to layman
 
Ivv workshop model-based-testing-of-nasa-systems
Ivv workshop model-based-testing-of-nasa-systemsIvv workshop model-based-testing-of-nasa-systems
Ivv workshop model-based-testing-of-nasa-systems
 
Assessing Model-Based Testing: An Empirical Study Conducted in Industry
Assessing Model-Based Testing: An Empirical Study Conducted in IndustryAssessing Model-Based Testing: An Empirical Study Conducted in Industry
Assessing Model-Based Testing: An Empirical Study Conducted in Industry
 
Automated testing of NASA Software - part 2
Automated testing of NASA Software - part 2Automated testing of NASA Software - part 2
Automated testing of NASA Software - part 2
 
Reverse Architecting of a Medical Device Software
Reverse Architecting of a Medical Device SoftwareReverse Architecting of a Medical Device Software
Reverse Architecting of a Medical Device Software
 
Interface-Implementation Contract Checking
Interface-Implementation Contract CheckingInterface-Implementation Contract Checking
Interface-Implementation Contract Checking
 
Verifying Architectural Design Rules of a Flight Software Product Line
Verifying Architectural Design Rules of a Flight Software Product LineVerifying Architectural Design Rules of a Flight Software Product Line
Verifying Architectural Design Rules of a Flight Software Product Line
 
Exploiting Cryptographic Misuse - An Example
Exploiting Cryptographic Misuse - An ExampleExploiting Cryptographic Misuse - An Example
Exploiting Cryptographic Misuse - An Example
 
Reverse Engineering of Software Architecture
Reverse Engineering of Software ArchitectureReverse Engineering of Software Architecture
Reverse Engineering of Software Architecture
 
Load-time Hacking using LD_PRELOAD
Load-time Hacking using LD_PRELOADLoad-time Hacking using LD_PRELOAD
Load-time Hacking using LD_PRELOAD
 
Secure application programming in the presence of side channel attacks
Secure application programming in the presence of side channel attacksSecure application programming in the presence of side channel attacks
Secure application programming in the presence of side channel attacks
 
Model-based Testing of a Software Bus - Applied on Core Flight Executive
Model-based Testing of a Software Bus - Applied on Core Flight ExecutiveModel-based Testing of a Software Bus - Applied on Core Flight Executive
Model-based Testing of a Software Bus - Applied on Core Flight Executive
 
Model-based Testing using Microsoft’s Spec Explorer Tool: A Case Study
Model-based Testing using Microsoft’s Spec Explorer Tool: A Case StudyModel-based Testing using Microsoft’s Spec Explorer Tool: A Case Study
Model-based Testing using Microsoft’s Spec Explorer Tool: A Case Study
 
LD_PRELOAD Exploitation - DC9723
LD_PRELOAD Exploitation - DC9723LD_PRELOAD Exploitation - DC9723
LD_PRELOAD Exploitation - DC9723
 
Linux binary analysis and exploitation
Linux binary analysis and exploitationLinux binary analysis and exploitation
Linux binary analysis and exploitation
 
Stack Frame Protection
Stack Frame ProtectionStack Frame Protection
Stack Frame Protection
 
from Source to Binary: How GNU Toolchain Works
from Source to Binary: How GNU Toolchain Worksfrom Source to Binary: How GNU Toolchain Works
from Source to Binary: How GNU Toolchain Works
 
GNU ld的linker script簡介
GNU ld的linker script簡介GNU ld的linker script簡介
GNU ld的linker script簡介
 

Ähnlich wie Elf文件解析

selection_sort..c#include stdio.hheader file input output func.pdf
selection_sort..c#include stdio.hheader file input output func.pdfselection_sort..c#include stdio.hheader file input output func.pdf
selection_sort..c#include stdio.hheader file input output func.pdf
anton291
 
1sequences and sampling. Suppose we went to sample the x-axis from X.pdf
1sequences and sampling. Suppose we went to sample the x-axis from X.pdf1sequences and sampling. Suppose we went to sample the x-axis from X.pdf
1sequences and sampling. Suppose we went to sample the x-axis from X.pdf
rushabhshah600
 
#include stdio.h#include stdlib.h#include string.h#inclu.pdf
#include stdio.h#include stdlib.h#include string.h#inclu.pdf#include stdio.h#include stdlib.h#include string.h#inclu.pdf
#include stdio.h#include stdlib.h#include string.h#inclu.pdf
apleather
 

Ähnlich wie Elf文件解析 (20)

selection_sort..c#include stdio.hheader file input output func.pdf
selection_sort..c#include stdio.hheader file input output func.pdfselection_sort..c#include stdio.hheader file input output func.pdf
selection_sort..c#include stdio.hheader file input output func.pdf
 
VTU Data Structures Lab Manual
VTU Data Structures Lab ManualVTU Data Structures Lab Manual
VTU Data Structures Lab Manual
 
1sequences and sampling. Suppose we went to sample the x-axis from X.pdf
1sequences and sampling. Suppose we went to sample the x-axis from X.pdf1sequences and sampling. Suppose we went to sample the x-axis from X.pdf
1sequences and sampling. Suppose we went to sample the x-axis from X.pdf
 
III MCS python lab (1).pdf
III MCS python lab (1).pdfIII MCS python lab (1).pdf
III MCS python lab (1).pdf
 
C lab manaual
C lab manaualC lab manaual
C lab manaual
 
Basic C Programming Lab Practice
Basic C Programming Lab PracticeBasic C Programming Lab Practice
Basic C Programming Lab Practice
 
Academy PRO: ES2015
Academy PRO: ES2015Academy PRO: ES2015
Academy PRO: ES2015
 
Hangman Game Programming in C (coding)
Hangman Game Programming in C (coding)Hangman Game Programming in C (coding)
Hangman Game Programming in C (coding)
 
Struct examples
Struct examplesStruct examples
Struct examples
 
SWP - A Generic Language Parser
SWP - A Generic Language ParserSWP - A Generic Language Parser
SWP - A Generic Language Parser
 
BCSL 058 solved assignment
BCSL 058 solved assignmentBCSL 058 solved assignment
BCSL 058 solved assignment
 
Perl6 Regexen: Reduce the line noise in your code.
Perl6 Regexen: Reduce the line noise in your code.Perl6 Regexen: Reduce the line noise in your code.
Perl6 Regexen: Reduce the line noise in your code.
 
RIDA PROJECT
RIDA PROJECTRIDA PROJECT
RIDA PROJECT
 
2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets
 
2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets2Bytesprog2 course_2014_c1_sets
2Bytesprog2 course_2014_c1_sets
 
#include stdio.h#include stdlib.h#include string.h#inclu.pdf
#include stdio.h#include stdlib.h#include string.h#inclu.pdf#include stdio.h#include stdlib.h#include string.h#inclu.pdf
#include stdio.h#include stdlib.h#include string.h#inclu.pdf
 
week-7x
week-7xweek-7x
week-7x
 
perl_lessons
perl_lessonsperl_lessons
perl_lessons
 
perl_lessons
perl_lessonsperl_lessons
perl_lessons
 
DAA Lab File C Programs
DAA Lab File C ProgramsDAA Lab File C Programs
DAA Lab File C Programs
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Kürzlich hochgeladen (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

Elf文件解析

  • 4. 大端小端 Inter 摩托罗拉
  • 6.
  • 10. 1. Upload Sky shell with 'exec' command and symbols (requires several recompilations to generate correct symbols): > make sky-shell-exec.sky 编译内核 > make sky-shell-exec.sky CORE=sky-shell-exec.sky 生成symbols > make sky-shell-exec.upload CORE=sky-shell-exec.sky 再次编译内核 如果直接执行第二条命令,可以生成sky-shell-exec.sky , symbols为空,
  • 11. Symbols怎么生成 • Makefile.msp430中 ifdef CORE symbols.c: # @${CONTIKI}/tools/msp430-make-symbols $(CORE) $(NM) $(CORE) | awk -f $(CONTIKI)/tools/mknmlist > symbols.c else symbols.c symbols.h: @${CONTIKI}/tools/make-empty-symbols Endif
  • 12. 命令 • Msp430-nm - list symbols from object files • awk [options] -f scriptfile var=value file(s) awk是一种编程语言,用于在linux/unix下对文本和数据进 行处理。数据可以来自标准输入、一个或多个文件,或其 它命令的输出。它支持用户自定义函数和动态正则表达式 等先进功能,是linux/unix下的一个强大编程工具。它在命 令行中使用,但更多是作为脚本来使用。awk的处理文本 和数据的方式是这样的,它逐行扫描文件,从第一行到最 后一行,寻找匹配的特定模式的行,并在这些行上进行你 想要的操作。如果没有指定处理动作,则把匹配的行显示 到标准输出(屏幕),如果没有指定模式,则所有被操作所 指定的行都被处理。
  • 13. mknmlist /^[0123456789abcdef]+ [ABCDGRSTUVW] / { if ($3 != "symbols" && $3 != "symbols_nelts") { name[nname] = $3; nname++; function sort(V, N, tmp, i, j) { } V[-1] = ""; # Used as a sentinel before V[0]. } for (i = 1; i < N; i++) for (j = i; V[j - 1] > V[j]; j--) { END { tmp = V[j]; sort(name, nname); V[j] = V[j - 1]; V[j - 1] = tmp; } print "#include "loader/symbols.h"n"; return; } # Must deal with compiler builtins etc. for (x = 0; x < nname; x++) { BEGIN { if (builtin[name[x]] != "") nname = 0; print builtin[name[x]] ";"; builtin["printf"] = "int printf(const char *, ...)"; else builtin["sprintf"] = "int sprintf(char *, const print "extern int " name[x]"();"; char *, ...)"; } builtin["malloc"] = "void *malloc()"; print "n"; builtin["calloc"] = "void *calloc()"; builtin["memcpy"] = "void *memcpy()"; # nname++: An { 0, 0 } entry is added at the end of the vector. builtin["memset"] = "void *memset()"; print "const int symbols_nelts = " nname+1 ";"; builtin["memmove"] = "void *memmove()"; print "const struct symbols symbols[" nname+1 "] = {"; builtin["strcpy"] = "char *strcpy()"; for (x = 0; x < nname; x++) builtin["strchr"] = "char *strchr()"; print "{ "" name[x] "", (void *)&"name[x]" },"; builtin[""] = ""; print "{ (const char *)0, (void *)0} };"; } }