ghidra/Ghidra/Features/Base/ghidra_scripts/CreateDefaultGDTArchivesScript.java
2023-04-03 19:54:45 +00:00

1037 lines
21 KiB
Java

/* ###
* IP: GHIDRA
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
//
// Parses default header file gdt archives
//
// To replace existing header files and have the data type ID's synchronized
//
// Must run SynchronizeGDTCategoryPaths.java script with old and replacement GDT
// archive to synchronize upper/lower case paths
/// (only on windows archives)
//
// Then Run DataTypeArchiveTransformer in eclipse to synchronize old data types ID's
//
//@category Data Types
import java.io.File;
import java.io.IOException;
import ghidra.app.script.GhidraScript;
import ghidra.app.util.cparser.C.CParserUtils;
import ghidra.app.util.cparser.C.ParseException;
import ghidra.program.model.data.DataTypeManager;
import ghidra.program.model.data.FileDataTypeManager;
import ghidra.util.Msg;
import ghidra.util.task.TaskMonitor;
public class CreateDefaultGDTArchivesScript extends GhidraScript {
private File outputDirectory;
private static String headerFilePath = "/data/HeaderFiles";
@Override
protected void run() throws Exception {
outputDirectory = askDirectory("Select Directory for GDT files", "Select GDT Output Dir");
parseGDT_CLIB32();
parseGDT_CLIB64();
parseGDT_VS12_32();
parseGDT_VS12_64();
}
private void parseHeaderFilesToGDT(File outputDir, String gdtName, String languageID, String compiler, String[] filenames, String[] args)
throws ParseException, ghidra.app.util.cparser.CPP.ParseException, IOException {
DataTypeManager openTypes[] = null;
parseHeaderFilesToGDT(openTypes, outputDir, gdtName, languageID, compiler, filenames, args);
}
private void parseHeaderFilesToGDT(DataTypeManager openTypes[], File outputDir, String gdtName, String languageID, String compiler, String[] filenames, String[] args)
throws ParseException, ghidra.app.util.cparser.CPP.ParseException, IOException {
String dataTypeFile = outputDir + File.separator + gdtName + ".gdt";
File f = getArchiveFile(dataTypeFile);
FileDataTypeManager dtMgr = FileDataTypeManager.createFileArchive(f);
String messages = CParserUtils.parseHeaderFiles(openTypes, filenames, args, dtMgr, languageID, compiler, null, monitor);
Msg.info(this, messages);
dtMgr.save();
dtMgr.close();
}
/**
* Turn string into a file, delete old archive if it exists
*
* @param dataTypeFile
*
* @return file
*/
private File getArchiveFile(String dataTypeFile) {
File f = new File(dataTypeFile);
if (f.exists()) {
f.delete();
}
String lockFile = dataTypeFile + ".ulock";
File lf = new File(lockFile);
if (lf.exists()) {
lf.delete();
}
return f;
}
public void parseGDT_VS12_32() throws Exception {
String filenames[] = {
"sdkddkver.h",
"sal.h",
"assert.h",
"conio.h",
"crtdefs.h",
"crtdbg.h",
"crtwrn.h",
"ctype.h",
"basetsd.h",
"WinDef.h",
"WinNT.h",
"delayimp.h",
"direct.h",
"dos.h",
"errno.h",
"excpt.h",
"fcntl.h",
"float.h",
"fpieee.h",
"io.h",
"iso646.h",
"limits.h",
"locale.h",
"malloc.h",
"math.h",
"mbctype.h",
"mbstring.h",
"memory.h",
"minmax.h",
"new.h",
"omp.h",
"pgobootrun.h",
"process.h",
"rtcapi.h",
"search.h",
"setjmp.h",
"setjmpex.h",
"share.h",
"signal.h",
"srv.h",
"stdarg.h",
"stddef.h",
"stdexcpt.h",
"stdio.h",
"stdlib.h",
"string.h",
"tchar.h",
"time.h",
"use_ansi.h",
"vadefs.h",
"varargs.h",
"wchar.h",
"wctype.h",
"xlocinfo.h",
"xmath.h",
"ymath.h",
"yvals.h",
"CommDlg.h",
"WinUser.h",
"WinNls.h",
"internal.h",
"strsafe.h",
"align.h",
"awint.h",
"crtversion.h",
"cruntime.h",
"ctime.h",
"cvt.h",
"dbgint.h",
"ehdata.h",
"emmintrin.h",
"errmsg.h",
"fenv.h",
"file2.h",
"fltintrn.h",
"immintrin.h",
"internal_securecrt.h",
"inttypes.h",
"isa_availability.h",
"mbdata.h",
"msdos.h",
"mtdll.h",
"nlsdownlevel.h",
"nlsint.h",
"nmmintrin.h",
"oscalls.h",
"pmmintrin.h",
"rtcsup.h",
"rterr.h",
"sect_attribs.h",
"setlocal.h",
"smmintrin.h",
"stdbool.h",
"stdint.h",
"syserr.h",
"targetver.h",
"tmmintrin.h",
"winheap.h",
"wmmintrin.h",
"wrapwin.h",
"xkeycheck.h",
"xmmintrin.h",
"xmtx.h",
"xtgmath.h",
"xxcctype.h",
"xxdftype.h",
"xxfftype.h",
"xxlftype.h",
"xxwctype.h",
"xxxprec.h",
"shlobj.h",
"evntprov.h",
"uiautomation.h",
"aclapi.h",
"appcompatapi.h",
"capi.h",
"clusapi.h",
"cryptuiapi.h",
"cscapi.h",
"devpropdef.h",
"dhcpsapi.h",
"dwmapi.h",
"ehstorapi.h",
"functiondiscoveryapi.h",
"ipexport.h",
"icmpapi.h",
"iepmapi.h",
"imapi.h",
"ksopmapi.h",
"locationapi.h",
"lpmapi.h",
"mapi.h",
"mbnapi.h",
"mfapi.h",
"mgmtapi.h",
"mmdeviceapi.h",
"mprapi.h",
"msctfmonitorapi.h",
"ndfapi.h",
"netioapi.h",
"npapi.h",
"nspapi.h",
"ntdsapi.h",
"ntmsapi.h",
"ntsecapi.h",
"patchapi.h",
"portabledeviceapi.h",
"portabledeviceconnectapi.h",
"propapi.h",
"psapi.h",
"rdpencomapi.h",
"resapi.h",
"sapi.h",
"searchapi.h",
"sensapi.h",
"sensorsapi.h",
"setupapi.h",
"shellapi.h",
"shlwapi.h",
"srrestoreptapi.h",
"svrapi.h",
"t2embapi.h",
"tapi.h",
"uiautomationcoreapi.h",
"wcnapi.h",
"wdsclientapi.h",
"werapi.h",
"windowssideshowapi.h",
"wlanapi.h",
"wpapi.h",
"wpcapi.h",
"wscapi.h",
"wsdapi.h",
"wspiapi.h",
"rpcproxy.h",
};
String args[] = {
"-I"+headerFilePath+"/VC/VS12/src",
"-I"+headerFilePath+"/VC/VS12/include",
"-I"+headerFilePath+"/VC/SDK/v7.1A/Include",
"-D_M_IX86=300",
"-D_MSC_VER=1200",
"-D_INTEGRAL_MAX_BITS=32",
"-DWINVER=0x0900",
"-D_X86_",
"-D_WIN32",
"-DCRTDLL",
"-D_USE_ATTRIBUTES_FOR_SAL",
"-D_CRTBLD",
"-D_OPENMP_NOFORCE_MANIFEST",
"-DSTRSAFE_LIB",
"-DSTRSAFE_LIB_IMPL",
"-DLPSKBINFO=LPARAM",
"-DCONST=const",
"-D_CRT_SECURE_NO_WARNINGS",
"-D_CRT_NONSTDC_NO_DEPRECATE",
"-D_CRT_NONSTDC_NO_WARNINGS",
"-D_CRT_OBSOLETE_NO_DEPRECATE",
"-D_ALLOW_KEYWORD_MACROS",
"-D_ASSERT_OK",
"-DSTRSAFE_NO_DEPRECATE",
"-D__possibly_notnullterminated",
"-Dtype_info=\"void *\"",
"-D_ThrowInfo=ThrowInfo",
"-v0",
"-D__inner_checkReturn=",
};
parseHeaderFilesToGDT(outputDirectory, "windows_vs12_32_new", "x86:LE:32:default", "windows", filenames, args);
}
public void parseGDT_VS12_64() throws Exception {
String filenames[] = {
"sdkddkver.h",
"sal.h",
"assert.h",
"conio.h",
"crtdefs.h",
"crtdbg.h",
"crtwrn.h",
"ctype.h",
"basetsd.h",
"WinDef.h",
"WinNT.h",
"delayimp.h",
"direct.h",
"dos.h",
"errno.h",
"excpt.h",
"fcntl.h",
"float.h",
"fpieee.h",
"io.h",
"iso646.h",
"limits.h",
"locale.h",
"malloc.h",
"math.h",
"mbctype.h",
"mbstring.h",
"memory.h",
"minmax.h",
"new.h",
"omp.h",
"pgobootrun.h",
"process.h",
"rtcapi.h",
"search.h",
"setjmp.h",
"setjmpex.h",
"share.h",
"signal.h",
"srv.h",
"stdarg.h",
"stddef.h",
"stdexcpt.h",
"stdio.h",
"stdlib.h",
"string.h",
"tchar.h",
"time.h",
"use_ansi.h",
"vadefs.h",
"varargs.h",
"wchar.h",
"wctype.h",
"xlocinfo.h",
"xmath.h",
"ymath.h",
"yvals.h",
"CommDlg.h",
"WinUser.h",
"WinNls.h",
"internal.h",
"strsafe.h",
"align.h",
"awint.h",
"crtversion.h",
"cruntime.h",
"ctime.h",
"cvt.h",
"dbgint.h",
"ehdata.h",
"emmintrin.h",
"errmsg.h",
"fenv.h",
"file2.h",
"fltintrn.h",
"immintrin.h",
"internal_securecrt.h",
"inttypes.h",
"isa_availability.h",
"mbdata.h",
"msdos.h",
"mtdll.h",
"nlsdownlevel.h",
"nlsint.h",
"nmmintrin.h",
"oscalls.h",
"pmmintrin.h",
"rtcsup.h",
"rterr.h",
"sect_attribs.h",
"setlocal.h",
"smmintrin.h",
"stdbool.h",
"stdint.h",
"syserr.h",
"targetver.h",
"tmmintrin.h",
"winheap.h",
"wmmintrin.h",
"wrapwin.h",
"xkeycheck.h",
"xmmintrin.h",
"xmtx.h",
"xtgmath.h",
"xxcctype.h",
"xxdftype.h",
"xxfftype.h",
"xxlftype.h",
"xxwctype.h",
"xxxprec.h",
"shlobj.h",
"evntprov.h",
"uiautomation.h",
"aclapi.h",
"appcompatapi.h",
"capi.h",
"clusapi.h",
"cryptuiapi.h",
"cscapi.h",
"devpropdef.h",
"dhcpsapi.h",
"dwmapi.h",
"ehstorapi.h",
"functiondiscoveryapi.h",
"ipexport.h",
"icmpapi.h",
"iepmapi.h",
"imapi.h",
"ksopmapi.h",
"locationapi.h",
"lpmapi.h",
"mapi.h",
"mbnapi.h",
"mfapi.h",
"mgmtapi.h",
"mmdeviceapi.h",
"mprapi.h",
"msctfmonitorapi.h",
"ndfapi.h",
"netioapi.h",
"npapi.h",
"nspapi.h",
"ntdsapi.h",
"ntmsapi.h",
"ntsecapi.h",
"patchapi.h",
"portabledeviceapi.h",
"portabledeviceconnectapi.h",
"propapi.h",
"psapi.h",
"rdpencomapi.h",
"resapi.h",
"sapi.h",
"searchapi.h",
"sensapi.h",
"sensorsapi.h",
"setupapi.h",
"shellapi.h",
"shlwapi.h",
"srrestoreptapi.h",
"svrapi.h",
"t2embapi.h",
"tapi.h",
"uiautomationcoreapi.h",
"wcnapi.h",
"wdsclientapi.h",
"werapi.h",
"windowssideshowapi.h",
"wlanapi.h",
"wpapi.h",
"wpcapi.h",
"wscapi.h",
"wsdapi.h",
"wspiapi.h",
"rpcproxy.h",
};
String args[] = {
"-I"+headerFilePath+"/VC/VS12/src",
"-I"+headerFilePath+"/VC/VS12/include",
"-I"+headerFilePath+"/VC/SDK/v7.1A/Include",
"-D_MSC_VER=1200",
"-D_INTEGRAL_MAX_BITS=64",
"-DWINVER=0x0900",
"-D_AMD64_",
"-D_M_AMD64",
"-D_M_X64",
"-D_WIN64",
"-D_WIN32",
"-D_USE_ATTRIBUTES_FOR_SAL",
"-D_CRTBLD",
"-D_OPENMP_NOFORCE_MANIFEST",
"-DSTRSAFE_LIB",
"-DSTRSAFE_LIB_IMPL",
"-DLPSKBINFO=LPARAM",
"-DCONST=const",
"-D_CRT_SECURE_NO_WARNINGS",
"-D_CRT_NONSTDC_NO_DEPRECATE",
"-D_CRT_NONSTDC_NO_WARNINGS",
"-D_CRT_OBSOLETE_NO_DEPRECATE",
"-D_ALLOW_KEYWORD_MACROS",
"-D_ASSERT_OK",
"-DSTRSAFE_NO_DEPRECATE",
"-D__possibly_notnullterminated",
"-Dtype_info=\"void *\"",
"-D_ThrowInfo=ThrowInfo",
"-D__unaligned=",
"-v0",
"-D__inner_checkReturn=",
};
parseHeaderFilesToGDT(outputDirectory, "windows_vs12_64_new", "x86:LE:64:default", "windows", filenames, args);
}
public void parseGDT_CLIB64() throws Exception {
String filenames[] = {
"sys/types.h",
"types.h",
"stddef.h",
"stddef.h",
"openssl/opensslconf-x86_64.h",
"openssl/bn.h",
"openssl/ssl.h",
"openssl/asn1_mac.h",
"openssl/asn1t.h",
"openssl/blowfish.h",
"openssl/camellia.h",
"openssl/cast.h",
"openssl/cmac.h",
"openssl/cms.h",
"openssl/conf_api.h",
"openssl/des.h",
"openssl/dso.h",
"openssl/engine.h",
"openssl/fips_rand.h",
"openssl/idea.h",
"openssl/krb5_asn.h",
"openssl/md2.h",
"openssl/md4.h",
"openssl/md5.h",
"openssl/ocsp.h",
"openssl/pkcs12.h",
"openssl/rc2.h",
"openssl/rc4.h",
"openssl/ripemd.h",
"openssl/seed.h",
"openssl/ssl3.h",
"openssl/txt_db.h",
"openssl/whrlpool.h",
"aio.h",
"arpa/inet.h",
"cpio.h",
"dirent.h",
"fcntl.h",
"fmtmsg.h",
"fnmatch.h",
"ftw.h",
"glob.h",
"grp.h",
"iconv.h",
"langinfo.h",
"libgen.h",
"monetary.h",
"mqueue.h",
"ndbm.h",
"net/if.h",
"netdb.h",
"netinet/in.h",
"netinet/tcp.h",
"nl_types.h",
"poll.h",
"pthread.h",
"pwd.h",
"regex.h",
"sched.h",
"search.h",
"semaphore.h",
"spawn.h",
"strings.h",
"stropts.h",
"sys/ipc.h",
"sys/mman.h",
"sys/msg.h",
"sys/resource.h",
"sys/select.h",
"sys/sem.h",
"sys/shm.h",
"sys/socket.h",
"sys/stat.h",
"sys/statvfs.h",
"sys/time.h",
"sys/times.h",
"sys/types.h",
"sys/uio.h",
"sys/un.h",
"sys/utsname.h",
"sys/wait.h",
"syslog.h",
"tar.h",
"termios.h",
"trace.h",
"ulimit.h",
"unistd.h",
"utime.h",
"utmpx.h",
"wordexp.h",
"assert.h",
"complex.h",
"ctype.h",
"fenv.h",
"float.h",
"inttypes.h",
"iso646.h",
"limits.h",
"locale.h",
"math.h",
"setjmp.h",
"signal.h",
"stdarg.h",
"stdbool.h",
"stddef.h",
"stdint.h",
"stdio.h",
"stdlib.h",
"string.h",
"tgmath.h",
"time.h",
"wchar.h",
"wctype.h",
"sys/acct.h",
"sys/debugreg.h",
"sys/epoll.h",
"sys/eventfd.h",
"sys/fcntl.h",
"sys/fsuid.h",
"sys/gmon.h",
"sys/gmon_out.h",
"sys/inotify.h",
"sys/io.h",
"sys/kd.h",
"sys/kdaemon.h",
"sys/klog.h",
"sys/mount.h",
"sys/mtio.h",
"sys/pci.h",
"sys/perm.h",
"sys/personality.h",
"sys/prctl.h",
"sys/profil.h",
"sys/ptrace.h",
"sys/quota.h",
"sys/raw.h",
"sys/reboot.h",
"sys/reg.h",
"sys/sem.h",
"sys/sendfile.h",
"sys/signal.h",
"sys/signalfd.h",
"sys/socketvar.h",
"sys/soundcard.h",
"sys/statvfs.h",
"sys/swap.h",
"sys/sysctl.h",
"sys/sysinfo.h",
"sys/termios.h",
"sys/timerfd.h",
"sys/ttychars.h",
"sys/ultrasound.h",
"sys/unistd.h",
"sys/ustat.h",
"sys/vfs.h",
"sys/vlimit.h",
"sys/vt.h",
"sys/vtimes.h",
"sys/xattr.h",
"errno.h",
"mathcalls.h",
"net/ethernet.h",
"net/if_arp.h",
"net/if_ppp.h",
"net/if_slip.h",
"net/ppp_defs.h",
"net/if.h",
"net/if_packet.h",
"net/if_shaper.h",
"net/ppp-comp.h",
"net/route.h",
"netinet/ether.h",
"netinet/if_fddi.h",
"netinet/in.h ",
"netinet/ip6.h",
"netinet/udp.h",
"netinet/icmp6.h",
"netinet/if_tr.h",
"netinet/in_systm.h",
"netinet/ip_icmp.h",
"netinet/if_ether.h",
"netinet/igmp.h",
"netinet/ip.h",
"netinet/tcp.h",
"rpc/types.h",
"rpc/auth.h",
"rpc/des_crypt.h",
"rpc/pmap_prot.h",
"rpc/rpc_msg.h",
"rpc/xdr.h",
"rpc/auth_des.h",
"rpc/key_prot.h",
"rpc/pmap_rmt.h",
"rpc/svc.h",
"rpc/auth_unix.h",
"rpc/netdb.h",
"rpc/rpc.h",
"rpc/svc_auth.h",
"rpc/clnt.h",
"rpc/pmap_clnt.h",
"rpc/rpc_des.h",
"rpcsvc/bootparam.h",
"rpcsvc/nis_callback.h",
"rpcsvc/yp_prot.h",
"rpcsvc/rstat.h",
"rpcsvc/rusers.h",
"rpcsvc/spray.h",
"rpcsvc/ypupd.h",
"rpcsvc/mount.h",
"rpcsvc/nis.h",
"protocols/routed.h",
"protocols/rwhod.h",
"protocols/talkd.h",
"protocols/timed.h",
"arpa/ftp.h",
"arpa/inet.h",
"arpa/nameser.h",
"arpa/nameser_compat.h",
"arpa/telnet.h",
"arpa/tftp.h",
};
String args[] = {
"-I"+headerFilePath+"/linux/include",
"-I"+headerFilePath+"/linux/include/sys",
"-I"+headerFilePath+"/linux/gcc/include",
"-I"+headerFilePath+"/linux/x86_64-redhat-linux5E/include",
"-I"+headerFilePath+"/linux/x86_64-redhat-linux5E/include/sys",
"-D_X86_",
"-D__STDC__",
"-D_GNU_SOURCE",
"-D__WORDSIZE=64",
"-D__builtin_va_list=void *",
"-D__DO_NOT_DEFINE_COMPILE",
"-D_Complex",
"-D__NO_STRING_INLINES",
"-D__signed__",
"-D__extension__=",
"-D__GLIBC_HAVE_LONG_LONG=1",
"-D__need_sigset_t",
"-Daligned_u64=uint64_t",
};
parseHeaderFilesToGDT(outputDirectory, "generic_clib_64_new", "x86:LE:64:default", "gcc", filenames, args);
}
public void parseGDT_CLIB32() throws Exception {
String filenames[] = {
"sys/types.h",
"types.h",
"stddef.h",
"stddef.h",
"openssl/opensslconf-x86_64.h",
"openssl/des.h",
"openssl/bn.h",
"openssl/ssl.h",
"openssl/asn1_mac.h",
"openssl/asn1t.h",
"openssl/blowfish.h",
"openssl/camellia.h",
"openssl/cast.h",
"openssl/cmac.h",
"openssl/cms.h",
"openssl/conf_api.h",
"openssl/dso.h",
"openssl/engine.h",
"openssl/fips_rand.h",
"openssl/idea.h",
"openssl/krb5_asn.h",
"openssl/md2.h",
"openssl/md4.h",
"openssl/md5.h",
"openssl/ocsp.h",
"openssl/pkcs12.h",
"openssl/rc2.h",
"openssl/rc4.h",
"openssl/ripemd.h",
"openssl/seed.h",
"openssl/ssl3.h",
"openssl/txt_db.h",
"openssl/whrlpool.h",
"aio.h",
"arpa/inet.h",
"cpio.h",
"dirent.h",
"fcntl.h",
"fmtmsg.h",
"fnmatch.h",
"ftw.h",
"glob.h",
"grp.h",
"iconv.h",
"langinfo.h",
"libgen.h",
"monetary.h",
"mqueue.h",
"ndbm.h",
"net/if.h",
"netdb.h",
"netinet/in.h",
"netinet/tcp.h",
"nl_types.h",
"poll.h",
"pthread.h",
"pwd.h",
"regex.h",
"sched.h",
"search.h",
"semaphore.h",
"spawn.h",
"strings.h",
"stropts.h",
"sys/ipc.h",
"sys/mman.h",
"sys/msg.h",
"sys/resource.h",
"sys/select.h",
"sys/sem.h",
"sys/shm.h",
"sys/socket.h",
"sys/stat.h",
"sys/statvfs.h",
"sys/time.h",
"sys/times.h",
"sys/types.h",
"sys/uio.h",
"sys/un.h",
"sys/utsname.h",
"sys/wait.h",
"syslog.h",
"tar.h",
"termios.h",
"trace.h",
"ulimit.h",
"unistd.h",
"utime.h",
"utmpx.h",
"wordexp.h",
"assert.h",
"complex.h",
"ctype.h",
"fenv.h",
"float.h",
"inttypes.h",
"iso646.h",
"limits.h",
"locale.h",
"math.h",
"setjmp.h",
"signal.h",
"stdarg.h",
"stdbool.h",
"stddef.h",
"stdint.h",
"stdio.h",
"stdlib.h",
"string.h",
"tgmath.h",
"time.h",
"wchar.h",
"wctype.h",
"sys/acct.h",
"sys/debugreg.h",
"sys/epoll.h",
"sys/eventfd.h",
"sys/fcntl.h",
"sys/fsuid.h",
"sys/gmon.h",
"sys/gmon_out.h",
"sys/inotify.h",
"sys/io.h",
"sys/kd.h",
"sys/kdaemon.h",
"sys/klog.h",
"sys/mount.h",
"sys/mtio.h",
"sys/pci.h",
"sys/perm.h",
"sys/personality.h",
"sys/prctl.h",
"sys/profil.h",
"sys/ptrace.h",
"sys/quota.h",
"sys/raw.h",
"sys/reboot.h",
"sys/reg.h",
"sys/sem.h",
"sys/sendfile.h",
"sys/signal.h",
"sys/signalfd.h",
"sys/socketvar.h",
"sys/soundcard.h",
"sys/statvfs.h",
"sys/swap.h",
"sys/sysctl.h",
"sys/sysinfo.h",
"sys/termios.h",
"sys/timerfd.h",
"sys/ttychars.h",
"sys/ultrasound.h",
"sys/unistd.h",
"sys/ustat.h",
"sys/vfs.h",
"sys/vlimit.h",
"sys/vt.h",
"sys/vtimes.h",
"sys/xattr.h",
"errno.h",
"mathcalls.h",
"net/ethernet.h",
"net/if_arp.h",
"net/if_ppp.h",
"net/if_slip.h",
"net/ppp_defs.h",
"net/if.h",
"net/if_packet.h",
"net/if_shaper.h",
"net/ppp-comp.h",
"net/route.h",
"netinet/ether.h",
"netinet/if_fddi.h",
"netinet/in.h ",
"netinet/ip6.h",
"netinet/udp.h",
"netinet/icmp6.h",
"netinet/if_tr.h",
"netinet/in_systm.h",
"netinet/ip_icmp.h",
"netinet/if_ether.h",
"netinet/igmp.h",
"netinet/ip.h",
"netinet/tcp.h",
"rpc/types.h",
"rpc/auth.h",
"rpc/des_crypt.h",
"rpc/pmap_prot.h",
"rpc/rpc_msg.h",
"rpc/xdr.h",
"rpc/auth_des.h",
"rpc/key_prot.h",
"rpc/pmap_rmt.h",
"rpc/svc.h",
"rpc/auth_unix.h",
"rpc/netdb.h",
"rpc/rpc.h",
"rpc/svc_auth.h",
"rpc/clnt.h",
"rpc/pmap_clnt.h",
"rpc/rpc_des.h",
"rpcsvc/bootparam.h",
"rpcsvc/nis_callback.h",
"rpcsvc/yp_prot.h",
"rpcsvc/rstat.h",
"rpcsvc/rusers.h",
"rpcsvc/spray.h",
"rpcsvc/ypupd.h",
"rpcsvc/mount.h",
"rpcsvc/nis.h",
"protocols/routed.h",
"protocols/rwhod.h",
"protocols/talkd.h",
"protocols/timed.h",
"arpa/ftp.h",
"arpa/inet.h",
"arpa/nameser.h",
"arpa/nameser_compat.h",
"arpa/telnet.h",
"arpa/tftp.h",
};
String args[] = {
"-I"+headerFilePath+"/linux/include",
"-I"+headerFilePath+"/linux/include/sys",
"-I"+headerFilePath+"/linux/gcc/include",
"-I"+headerFilePath+"/linux/x86_64-redhat-linux5E/include",
"-I"+headerFilePath+"/linux/x86_64-redhat-linux5E/include/sys",
"-D_X86_",
"-D__STDC__",
"-D_GNU_SOURCE",
"-D__WORDSIZE=32",
"-D__builtin_va_list=void *",
"-D__DO_NOT_DEFINE_COMPILE",
"-D_Complex",
"-D__NO_STRING_INLINES",
"-D__NO_LONG_DOUBLE_MATH",
"-D__signed__",
"-D__extension__=",
"-D__GLIBC_HAVE_LONG_LONG=1",
"-Daligned_u64=uint64_t",
};
parseHeaderFilesToGDT(outputDirectory, "generic_clib_new", "x86:LE:32:default", "gcc", filenames, args);
}
}