mirror of
				https://github.com/bytecodealliance/wasm-micro-runtime.git
				synced 2025-10-31 13:17:31 +00:00 
			
		
		
		
	
							parent
							
								
									1eedde7c33
								
							
						
					
					
						commit
						f5939c7bc1
					
				|  | @ -15,6 +15,7 @@ WAMR project reused some components from other open source project: | |||
| - **uvwasi**: for the WASI Libc with uvwasi implementation | ||||
| - **asmjit**: for the Fast JIT x86-64 codegen implementation | ||||
| - **zydis**: for the Fast JIT x86-64 codegen implementation | ||||
| - **NuttX ELF headers**: used in core/iwasm/aot/debug/elf_parser.c | ||||
| 
 | ||||
| The WAMR fast interpreter is a clean room development. We would acknowledge the inspirations by [WASM3](https://github.com/wasm3/wasm3) open source project for the approach of pre-calculated oprand stack location. | ||||
| 
 | ||||
|  | @ -33,6 +34,7 @@ The WAMR fast interpreter is a clean room development. We would acknowledge the | |||
| | uvwasi | unspecified | v0.0.12 | https://github.com/nodejs/uvwasi | | | ||||
| | asmjit | unspecified | unspecified | https://github.com/asmjit/asmjit | | | ||||
| | zydis | unspecified | e14a07895136182a5b53e181eec3b1c6e0b434de | https://github.com/zyantific/zydis | | | ||||
| | NuttX ELF headers | 72313301e23f9c2de969fb64b9a0f67bb4c284df | 10.3.0 | https://github.com/apache/incubator-nuttx | | | ||||
| 
 | ||||
| ## Licenses | ||||
| 
 | ||||
|  | @ -89,3 +91,9 @@ The WAMR fast interpreter is a clean room development. We would acknowledge the | |||
| 
 | ||||
| ### zydis | ||||
| [LICENSE](./core/iwasm/fast-jit/cg/LICENSE_ZYDIS) | ||||
| 
 | ||||
| ### NuttX ELF headers | ||||
| 
 | ||||
| [LICENSE](./core/iwasm/aot/debug/LICENSE_NUTTX) | ||||
| 
 | ||||
| [NOTICE](./core/iwasm/aot/debug/NOTICE_NUTTX) | ||||
|  |  | |||
							
								
								
									
										202
									
								
								core/iwasm/aot/debug/LICENSE_NUTTX
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										202
									
								
								core/iwasm/aot/debug/LICENSE_NUTTX
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,202 @@ | |||
|                                Apache License | ||||
|                            Version 2.0, January 2004 | ||||
|                         http://www.apache.org/licenses/ | ||||
| 
 | ||||
|    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||
| 
 | ||||
|    1. Definitions. | ||||
| 
 | ||||
|       "License" shall mean the terms and conditions for use, reproduction, | ||||
|       and distribution as defined by Sections 1 through 9 of this document. | ||||
| 
 | ||||
|       "Licensor" shall mean the copyright owner or entity authorized by | ||||
|       the copyright owner that is granting the License. | ||||
| 
 | ||||
|       "Legal Entity" shall mean the union of the acting entity and all | ||||
|       other entities that control, are controlled by, or are under common | ||||
|       control with that entity. For the purposes of this definition, | ||||
|       "control" means (i) the power, direct or indirect, to cause the | ||||
|       direction or management of such entity, whether by contract or | ||||
|       otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||
|       outstanding shares, or (iii) beneficial ownership of such entity. | ||||
| 
 | ||||
|       "You" (or "Your") shall mean an individual or Legal Entity | ||||
|       exercising permissions granted by this License. | ||||
| 
 | ||||
|       "Source" form shall mean the preferred form for making modifications, | ||||
|       including but not limited to software source code, documentation | ||||
|       source, and configuration files. | ||||
| 
 | ||||
|       "Object" form shall mean any form resulting from mechanical | ||||
|       transformation or translation of a Source form, including but | ||||
|       not limited to compiled object code, generated documentation, | ||||
|       and conversions to other media types. | ||||
| 
 | ||||
|       "Work" shall mean the work of authorship, whether in Source or | ||||
|       Object form, made available under the License, as indicated by a | ||||
|       copyright notice that is included in or attached to the work | ||||
|       (an example is provided in the Appendix below). | ||||
| 
 | ||||
|       "Derivative Works" shall mean any work, whether in Source or Object | ||||
|       form, that is based on (or derived from) the Work and for which the | ||||
|       editorial revisions, annotations, elaborations, or other modifications | ||||
|       represent, as a whole, an original work of authorship. For the purposes | ||||
|       of this License, Derivative Works shall not include works that remain | ||||
|       separable from, or merely link (or bind by name) to the interfaces of, | ||||
|       the Work and Derivative Works thereof. | ||||
| 
 | ||||
|       "Contribution" shall mean any work of authorship, including | ||||
|       the original version of the Work and any modifications or additions | ||||
|       to that Work or Derivative Works thereof, that is intentionally | ||||
|       submitted to Licensor for inclusion in the Work by the copyright owner | ||||
|       or by an individual or Legal Entity authorized to submit on behalf of | ||||
|       the copyright owner. For the purposes of this definition, "submitted" | ||||
|       means any form of electronic, verbal, or written communication sent | ||||
|       to the Licensor or its representatives, including but not limited to | ||||
|       communication on electronic mailing lists, source code control systems, | ||||
|       and issue tracking systems that are managed by, or on behalf of, the | ||||
|       Licensor for the purpose of discussing and improving the Work, but | ||||
|       excluding communication that is conspicuously marked or otherwise | ||||
|       designated in writing by the copyright owner as "Not a Contribution." | ||||
| 
 | ||||
|       "Contributor" shall mean Licensor and any individual or Legal Entity | ||||
|       on behalf of whom a Contribution has been received by Licensor and | ||||
|       subsequently incorporated within the Work. | ||||
| 
 | ||||
|    2. Grant of Copyright License. Subject to the terms and conditions of | ||||
|       this License, each Contributor hereby grants to You a perpetual, | ||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|       copyright license to reproduce, prepare Derivative Works of, | ||||
|       publicly display, publicly perform, sublicense, and distribute the | ||||
|       Work and such Derivative Works in Source or Object form. | ||||
| 
 | ||||
|    3. Grant of Patent License. Subject to the terms and conditions of | ||||
|       this License, each Contributor hereby grants to You a perpetual, | ||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|       (except as stated in this section) patent license to make, have made, | ||||
|       use, offer to sell, sell, import, and otherwise transfer the Work, | ||||
|       where such license applies only to those patent claims licensable | ||||
|       by such Contributor that are necessarily infringed by their | ||||
|       Contribution(s) alone or by combination of their Contribution(s) | ||||
|       with the Work to which such Contribution(s) was submitted. If You | ||||
|       institute patent litigation against any entity (including a | ||||
|       cross-claim or counterclaim in a lawsuit) alleging that the Work | ||||
|       or a Contribution incorporated within the Work constitutes direct | ||||
|       or contributory patent infringement, then any patent licenses | ||||
|       granted to You under this License for that Work shall terminate | ||||
|       as of the date such litigation is filed. | ||||
| 
 | ||||
|    4. Redistribution. You may reproduce and distribute copies of the | ||||
|       Work or Derivative Works thereof in any medium, with or without | ||||
|       modifications, and in Source or Object form, provided that You | ||||
|       meet the following conditions: | ||||
| 
 | ||||
|       (a) You must give any other recipients of the Work or | ||||
|           Derivative Works a copy of this License; and | ||||
| 
 | ||||
|       (b) You must cause any modified files to carry prominent notices | ||||
|           stating that You changed the files; and | ||||
| 
 | ||||
|       (c) You must retain, in the Source form of any Derivative Works | ||||
|           that You distribute, all copyright, patent, trademark, and | ||||
|           attribution notices from the Source form of the Work, | ||||
|           excluding those notices that do not pertain to any part of | ||||
|           the Derivative Works; and | ||||
| 
 | ||||
|       (d) If the Work includes a "NOTICE" text file as part of its | ||||
|           distribution, then any Derivative Works that You distribute must | ||||
|           include a readable copy of the attribution notices contained | ||||
|           within such NOTICE file, excluding those notices that do not | ||||
|           pertain to any part of the Derivative Works, in at least one | ||||
|           of the following places: within a NOTICE text file distributed | ||||
|           as part of the Derivative Works; within the Source form or | ||||
|           documentation, if provided along with the Derivative Works; or, | ||||
|           within a display generated by the Derivative Works, if and | ||||
|           wherever such third-party notices normally appear. The contents | ||||
|           of the NOTICE file are for informational purposes only and | ||||
|           do not modify the License. You may add Your own attribution | ||||
|           notices within Derivative Works that You distribute, alongside | ||||
|           or as an addendum to the NOTICE text from the Work, provided | ||||
|           that such additional attribution notices cannot be construed | ||||
|           as modifying the License. | ||||
| 
 | ||||
|       You may add Your own copyright statement to Your modifications and | ||||
|       may provide additional or different license terms and conditions | ||||
|       for use, reproduction, or distribution of Your modifications, or | ||||
|       for any such Derivative Works as a whole, provided Your use, | ||||
|       reproduction, and distribution of the Work otherwise complies with | ||||
|       the conditions stated in this License. | ||||
| 
 | ||||
|    5. Submission of Contributions. Unless You explicitly state otherwise, | ||||
|       any Contribution intentionally submitted for inclusion in the Work | ||||
|       by You to the Licensor shall be under the terms and conditions of | ||||
|       this License, without any additional terms or conditions. | ||||
|       Notwithstanding the above, nothing herein shall supersede or modify | ||||
|       the terms of any separate license agreement you may have executed | ||||
|       with Licensor regarding such Contributions. | ||||
| 
 | ||||
|    6. Trademarks. This License does not grant permission to use the trade | ||||
|       names, trademarks, service marks, or product names of the Licensor, | ||||
|       except as required for reasonable and customary use in describing the | ||||
|       origin of the Work and reproducing the content of the NOTICE file. | ||||
| 
 | ||||
|    7. Disclaimer of Warranty. Unless required by applicable law or | ||||
|       agreed to in writing, Licensor provides the Work (and each | ||||
|       Contributor provides its Contributions) on an "AS IS" BASIS, | ||||
|       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||||
|       implied, including, without limitation, any warranties or conditions | ||||
|       of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||||
|       PARTICULAR PURPOSE. You are solely responsible for determining the | ||||
|       appropriateness of using or redistributing the Work and assume any | ||||
|       risks associated with Your exercise of permissions under this License. | ||||
| 
 | ||||
|    8. Limitation of Liability. In no event and under no legal theory, | ||||
|       whether in tort (including negligence), contract, or otherwise, | ||||
|       unless required by applicable law (such as deliberate and grossly | ||||
|       negligent acts) or agreed to in writing, shall any Contributor be | ||||
|       liable to You for damages, including any direct, indirect, special, | ||||
|       incidental, or consequential damages of any character arising as a | ||||
|       result of this License or out of the use or inability to use the | ||||
|       Work (including but not limited to damages for loss of goodwill, | ||||
|       work stoppage, computer failure or malfunction, or any and all | ||||
|       other commercial damages or losses), even if such Contributor | ||||
|       has been advised of the possibility of such damages. | ||||
| 
 | ||||
|    9. Accepting Warranty or Additional Liability. While redistributing | ||||
|       the Work or Derivative Works thereof, You may choose to offer, | ||||
|       and charge a fee for, acceptance of support, warranty, indemnity, | ||||
|       or other liability obligations and/or rights consistent with this | ||||
|       License. However, in accepting such obligations, You may act only | ||||
|       on Your own behalf and on Your sole responsibility, not on behalf | ||||
|       of any other Contributor, and only if You agree to indemnify, | ||||
|       defend, and hold each Contributor harmless for any liability | ||||
|       incurred by, or claims asserted against, such Contributor by reason | ||||
|       of your accepting any such warranty or additional liability. | ||||
| 
 | ||||
|    END OF TERMS AND CONDITIONS | ||||
| 
 | ||||
|    APPENDIX: How to apply the Apache License to your work. | ||||
| 
 | ||||
|       To apply the Apache License to your work, attach the following | ||||
|       boilerplate notice, with the fields enclosed by brackets "[]" | ||||
|       replaced with your own identifying information. (Don't include | ||||
|       the brackets!)  The text should be enclosed in the appropriate | ||||
|       comment syntax for the file format. We also recommend that a | ||||
|       file or class name and description of purpose be included on the | ||||
|       same "printed page" as the copyright notice for easier | ||||
|       identification within third-party archives. | ||||
| 
 | ||||
|    Copyright [yyyy] [name of copyright owner] | ||||
| 
 | ||||
|    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. | ||||
| 
 | ||||
							
								
								
									
										5
									
								
								core/iwasm/aot/debug/NOTICE_NUTTX
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								core/iwasm/aot/debug/NOTICE_NUTTX
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| Apache NuttX | ||||
| Copyright 2020 The Apache Software Foundation | ||||
| 
 | ||||
| This product includes software developed at | ||||
| The Apache Software Foundation (http://www.apache.org/). | ||||
							
								
								
									
										368
									
								
								core/iwasm/aot/debug/elf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										368
									
								
								core/iwasm/aot/debug/elf.h
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,368 @@ | |||
| /****************************************************************************
 | ||||
|  * include/elf.h | ||||
|  * | ||||
|  * Licensed to the Apache Software Foundation (ASF) under one or more | ||||
|  * contributor license agreements.  See the NOTICE file distributed with | ||||
|  * this work for additional information regarding copyright ownership.  The | ||||
|  * ASF licenses this file to you 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. | ||||
|  * | ||||
|  ****************************************************************************/ | ||||
| 
 | ||||
| #ifndef __INCLUDE_ELF_H | ||||
| #define __INCLUDE_ELF_H | ||||
| 
 | ||||
| /****************************************************************************
 | ||||
|  * Included Files | ||||
|  ****************************************************************************/ | ||||
| 
 | ||||
| #include <stdint.h> | ||||
| 
 | ||||
| #define EI_NIDENT 16 /* Size of e_ident[] */ | ||||
| 
 | ||||
| /* NOTE: elf64.h and elf32.h refer EI_NIDENT defined above */ | ||||
| 
 | ||||
| #include "elf64.h" | ||||
| #include "elf32.h" | ||||
| 
 | ||||
| /****************************************************************************
 | ||||
|  * Pre-processor Definitions | ||||
|  ****************************************************************************/ | ||||
| 
 | ||||
| /* Values for Elf_Ehdr::e_type */ | ||||
| 
 | ||||
| #define ET_NONE 0        /* No file type */ | ||||
| #define ET_REL 1         /* Relocatable file */ | ||||
| #define ET_EXEC 2        /* Executable file */ | ||||
| #define ET_DYN 3         /* Shared object file */ | ||||
| #define ET_CORE 4        /* Core file */ | ||||
| #define ET_LOPROC 0xff00 /* Processor-specific */ | ||||
| #define ET_HIPROC 0xffff /* Processor-specific */ | ||||
| 
 | ||||
| /* Values for Elf_Ehdr::e_machine (most of this were not included in the
 | ||||
|  * original SCO document but have been gleaned from elsewhere). | ||||
|  */ | ||||
| 
 | ||||
| #define EM_NONE 0         /* No machine */ | ||||
| #define EM_M32 1          /* AT&T WE 32100 */ | ||||
| #define EM_SPARC 2        /* SPARC */ | ||||
| #define EM_386 3          /* Intel 80386 */ | ||||
| #define EM_68K 4          /* Motorola 68000 */ | ||||
| #define EM_88K 5          /* Motorola 88000 */ | ||||
| #define EM_486 6          /* Intel 486+ */ | ||||
| #define EM_860 7          /* Intel 80860 */ | ||||
| #define EM_MIPS 8         /* MIPS R3000 Big-Endian */ | ||||
| #define EM_MIPS_RS4_BE 10 /* MIPS R4000 Big-Endian */ | ||||
| #define EM_PARISC 15      /* HPPA */ | ||||
| #define EM_SPARC32PLUS 18 /* Sun's "v8plus" */ | ||||
| #define EM_PPC 20         /* PowerPC */ | ||||
| #define EM_PPC64 21       /* PowerPC64 */ | ||||
| #define EM_ARM 40         /* ARM */ | ||||
| #define EM_SH 42          /* SuperH */ | ||||
| #define EM_SPARCV9 43     /* SPARC v9 64-bit */ | ||||
| #define EM_H8_300 46 | ||||
| #define EM_IA_64 50  /* HP/Intel IA-64 */ | ||||
| #define EM_X86_64 62 /* AMD x86-64 */ | ||||
| #define EM_S390 22   /* IBM S/390 */ | ||||
| #define EM_CRIS 76   /* Axis Communications 32-bit embedded processor */ | ||||
| #define EM_V850 87   /* NEC v850 */ | ||||
| #define EM_M32R 88   /* Renesas M32R */ | ||||
| #define EM_XTENSA 94 /* Tensilica Xtensa */ | ||||
| #define EM_RISCV 243 /* RISC-V */ | ||||
| #define EM_ALPHA 0x9026 | ||||
| #define EM_CYGNUS_V850 0x9080 | ||||
| #define EM_CYGNUS_M32R 0x9041 | ||||
| #define EM_S390_OLD 0xa390 | ||||
| #define EM_FRV 0x5441 | ||||
| 
 | ||||
| /* Values for Elf_Ehdr::e_version */ | ||||
| 
 | ||||
| #define EV_NONE 0    /* Invalid version */ | ||||
| #define EV_CURRENT 1 /* The current version */ | ||||
| 
 | ||||
| /* Table 2. Ehe ELF identifier */ | ||||
| 
 | ||||
| #define EI_MAG0 0 /* File identification */ | ||||
| #define EI_MAG1 1 | ||||
| #define EI_MAG2 2 | ||||
| #define EI_MAG3 3 | ||||
| #define EI_CLASS 4   /* File class */ | ||||
| #define EI_DATA 5    /* Data encoding */ | ||||
| #define EI_VERSION 6 /* File version */ | ||||
| #define EI_OSABI 7   /* OS ABI */ | ||||
| #define EI_PAD 8     /* Start of padding bytes */ | ||||
| 
 | ||||
| /* EI_NIDENT is defined in "Included Files" section */ | ||||
| 
 | ||||
| #define EI_MAGIC_SIZE 4 | ||||
| #define EI_MAGIC            \ | ||||
|     {                       \ | ||||
|         0x7f, 'E', 'L', 'F' \ | ||||
|     } | ||||
| 
 | ||||
| #define ELFMAG0 0x7f /* EI_MAG */ | ||||
| #define ELFMAG1 'E' | ||||
| #define ELFMAG2 'L' | ||||
| #define ELFMAG3 'F' | ||||
| #define ELFMAG "\177ELF" | ||||
| 
 | ||||
| /* Table 3. Values for EI_CLASS */ | ||||
| 
 | ||||
| #define ELFCLASSNONE 0 /* Invalid class */ | ||||
| #define ELFCLASS32 1   /* 32-bit objects */ | ||||
| #define ELFCLASS64 2   /* 64-bit objects */ | ||||
| 
 | ||||
| /* Table 4. Values for EI_DATA */ | ||||
| 
 | ||||
| #define ELFDATANONE 0 /* Invalid data encoding */ | ||||
| #define ELFDATA2LSB                                                          \ | ||||
|     1                 /* Least significant byte occupying the lowest address \
 | ||||
|                        */ | ||||
| #define ELFDATA2MSB 2 /* Most significant byte occupying the lowest address */ | ||||
| 
 | ||||
| /* Table 6. Values for EI_OSABI */ | ||||
| 
 | ||||
| #define ELFOSABI_NONE 0   /* UNIX System V ABI */ | ||||
| #define ELFOSABI_SYSV 0   /* Alias.  */ | ||||
| #define ELFOSABI_HPUX 1   /* HP-UX */ | ||||
| #define ELFOSABI_NETBSD 2 /* NetBSD.  */ | ||||
| #define ELFOSABI_GNU 3    /* Object uses GNU ELF extensions.  */ | ||||
| #define ELFOSABI_LINUX ELFOSABI_GNU | ||||
| /* Compatibility alias.  */ | ||||
| #define ELFOSABI_SOLARIS 6      /* Sun Solaris.  */ | ||||
| #define ELFOSABI_AIX 7          /* IBM AIX.  */ | ||||
| #define ELFOSABI_IRIX 8         /* SGI Irix.  */ | ||||
| #define ELFOSABI_FREEBSD 9      /* FreeBSD.  */ | ||||
| #define ELFOSABI_TRU64 10       /* Compaq TRU64 UNIX.  */ | ||||
| #define ELFOSABI_MODESTO 11     /* Novell Modesto.  */ | ||||
| #define ELFOSABI_OPENBSD 12     /* OpenBSD.  */ | ||||
| #define ELFOSABI_ARM_AEABI 64   /* ARM EABI */ | ||||
| #define ELFOSABI_ARM 97         /* ARM */ | ||||
| #define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */ | ||||
| 
 | ||||
| #ifndef ELF_OSABI | ||||
| #define ELF_OSABI ELFOSABI_NONE | ||||
| #endif | ||||
| 
 | ||||
| /* Table 7: Special Section Indexes */ | ||||
| 
 | ||||
| #define SHN_UNDEF 0 | ||||
| #define SHN_LOPROC 0xff00 | ||||
| #define SHN_HIPROC 0xff1f | ||||
| #define SHN_ABS 0xfff1 | ||||
| #define SHN_COMMON 0xfff2 | ||||
| 
 | ||||
| /* Figure 4-9: Section Types, sh_type */ | ||||
| 
 | ||||
| #define SHT_NULL 0 | ||||
| #define SHT_PROGBITS 1 | ||||
| #define SHT_SYMTAB 2 | ||||
| #define SHT_STRTAB 3 | ||||
| #define SHT_RELA 4 | ||||
| #define SHT_HASH 5 | ||||
| #define SHT_DYNAMIC 6 | ||||
| #define SHT_NOTE 7 | ||||
| #define SHT_NOBITS 8 | ||||
| #define SHT_REL 9 | ||||
| #define SHT_SHLIB 10 | ||||
| #define SHT_DYNSYM 11 | ||||
| #define SHT_LOPROC 0x70000000 | ||||
| #define SHT_HIPROC 0x7fffffff | ||||
| #define SHT_LOUSER 0x80000000 | ||||
| #define SHT_HIUSER 0xffffffff | ||||
| 
 | ||||
| /* Figure 4-11: Section Attribute Flags, sh_flags */ | ||||
| 
 | ||||
| #define SHF_WRITE 1 | ||||
| #define SHF_ALLOC 2 | ||||
| #define SHF_EXECINSTR 4 | ||||
| #define SHF_MASKPROC 0xf0000000 | ||||
| 
 | ||||
| /* Figure 4-16: Symbol Binding, ELF_ST_BIND */ | ||||
| 
 | ||||
| #define STB_LOCAL 0 | ||||
| #define STB_GLOBAL 1 | ||||
| #define STB_WEAK 2 | ||||
| #define STB_LOPROC 13 | ||||
| #define STB_HIPROC 15 | ||||
| 
 | ||||
| /* Figure 4-17: Symbol Types, ELF_ST_TYPE */ | ||||
| 
 | ||||
| #define STT_NOTYPE 0 | ||||
| #define STT_OBJECT 1 | ||||
| #define STT_FUNC 2 | ||||
| #define STT_SECTION 3 | ||||
| #define STT_FILE 4 | ||||
| #define STT_LOPROC 13 | ||||
| #define STT_HIPROC 15 | ||||
| 
 | ||||
| /* Figure 5-2: Segment Types, p_type */ | ||||
| 
 | ||||
| #define PT_NULL 0 | ||||
| #define PT_LOAD 1 | ||||
| #define PT_DYNAMIC 2 | ||||
| #define PT_INTERP 3 | ||||
| #define PT_NOTE 4 | ||||
| #define PT_SHLIB 5 | ||||
| #define PT_PHDR 6 | ||||
| #define PT_LOPROC 0x70000000 | ||||
| #define PT_HIPROC 0x7fffffff | ||||
| 
 | ||||
| /* Figure 5-3: Segment Flag Bits, p_flags */ | ||||
| 
 | ||||
| #define PF_X 1                 /* Execute */ | ||||
| #define PF_W 2                 /* Write */ | ||||
| #define PF_R 4                 /* Read */ | ||||
| #define PF_MASKPROC 0xf0000000 /* Unspecified */ | ||||
| 
 | ||||
| /* Figure 5-10: Dynamic Array Tags, d_tag */ | ||||
| 
 | ||||
| #define DT_NULL 0            /* d_un=ignored */ | ||||
| #define DT_NEEDED 1          /* d_un=d_val */ | ||||
| #define DT_PLTRELSZ 2        /* d_un=d_val */ | ||||
| #define DT_PLTGOT 3          /* d_un=d_ptr */ | ||||
| #define DT_HASH 4            /* d_un=d_ptr */ | ||||
| #define DT_STRTAB 5          /* d_un=d_ptr */ | ||||
| #define DT_SYMTAB 6          /* d_un=d_ptr */ | ||||
| #define DT_RELA 7            /* d_un=d_ptr */ | ||||
| #define DT_RELASZ 8          /* d_un=d_val */ | ||||
| #define DT_RELAENT 9         /* d_un=d_val */ | ||||
| #define DT_STRSZ 10          /* d_un=d_val */ | ||||
| #define DT_SYMENT 11         /* d_un=d_val */ | ||||
| #define DT_INIT 12           /* d_un=d_ptr */ | ||||
| #define DT_FINI 13           /* d_un=d_ptr */ | ||||
| #define DT_SONAME 14         /* d_un=d_val */ | ||||
| #define DT_RPATH 15          /* d_un=d_val */ | ||||
| #define DT_SYMBOLIC 16       /* d_un=ignored */ | ||||
| #define DT_REL 17            /* d_un=d_ptr */ | ||||
| #define DT_RELSZ 18          /* d_un=d_val */ | ||||
| #define DT_RELENT 19         /* d_un=d_val */ | ||||
| #define DT_PLTREL 20         /* d_un=d_val */ | ||||
| #define DT_DEBUG 21          /* d_un=d_ptr */ | ||||
| #define DT_TEXTREL 22        /* d_un=ignored */ | ||||
| #define DT_JMPREL 23         /* d_un=d_ptr */ | ||||
| #define DT_BINDNOW 24        /* d_un=ignored */ | ||||
| #define DT_LOPROC 0x70000000 /* d_un=unspecified */ | ||||
| #define DT_HIPROC 0x7fffffff /* d_un= unspecified */ | ||||
| 
 | ||||
| /* Legal values for note segment descriptor types for core files. */ | ||||
| 
 | ||||
| #define NT_PRSTATUS 1   /* Contains copy of prstatus struct */ | ||||
| #define NT_PRFPREG 2    /* Contains copy of fpregset struct. */ | ||||
| #define NT_FPREGSET 2   /* Contains copy of fpregset struct */ | ||||
| #define NT_PRPSINFO 3   /* Contains copy of prpsinfo struct */ | ||||
| #define NT_PRXREG 4     /* Contains copy of prxregset struct */ | ||||
| #define NT_TASKSTRUCT 4 /* Contains copy of task structure */ | ||||
| #define NT_PLATFORM 5   /* String from sysinfo(SI_PLATFORM) */ | ||||
| #define NT_AUXV 6       /* Contains copy of auxv array */ | ||||
| #define NT_GWINDOWS 7   /* Contains copy of gwindows struct */ | ||||
| #define NT_ASRS 8       /* Contains copy of asrset struct */ | ||||
| #define NT_PSTATUS 10   /* Contains copy of pstatus struct */ | ||||
| #define NT_PSINFO 13    /* Contains copy of psinfo struct */ | ||||
| #define NT_PRCRED 14    /* Contains copy of prcred struct */ | ||||
| #define NT_UTSNAME 15   /* Contains copy of utsname struct */ | ||||
| #define NT_LWPSTATUS 16 /* Contains copy of lwpstatus struct */ | ||||
| #define NT_LWPSINFO 17  /* Contains copy of lwpinfo struct */ | ||||
| #define NT_PRFPXREG 20  /* Contains copy of fprxregset struct */ | ||||
| #define NT_SIGINFO 0x53494749 | ||||
| /* Contains copy of siginfo_t,
 | ||||
|  * size might increase | ||||
|  */ | ||||
| #define NT_FILE 0x46494c45 | ||||
| /* Contains information about mapped
 | ||||
|  * files | ||||
|  */ | ||||
| #define NT_PRXFPREG 0x46e62b7f | ||||
| /* Contains copy of user_fxsr_struct */ | ||||
| #define NT_PPC_VMX 0x100     /* PowerPC Altivec/VMX registers */ | ||||
| #define NT_PPC_SPE 0x101     /* PowerPC SPE/EVR registers */ | ||||
| #define NT_PPC_VSX 0x102     /* PowerPC VSX registers */ | ||||
| #define NT_PPC_TAR 0x103     /* Target Address Register */ | ||||
| #define NT_PPC_PPR 0x104     /* Program Priority Register */ | ||||
| #define NT_PPC_DSCR 0x105    /* Data Stream Control Register */ | ||||
| #define NT_PPC_EBB 0x106     /* Event Based Branch Registers */ | ||||
| #define NT_PPC_PMU 0x107     /* Performance Monitor Registers */ | ||||
| #define NT_PPC_TM_CGPR 0x108 /* TM checkpointed GPR Registers */ | ||||
| #define NT_PPC_TM_CFPR 0x109 /* TM checkpointed FPR Registers */ | ||||
| #define NT_PPC_TM_CVMX 0x10a /* TM checkpointed VMX Registers */ | ||||
| #define NT_PPC_TM_CVSX 0x10b /* TM checkpointed VSX Registers */ | ||||
| #define NT_PPC_TM_SPR 0x10c  /* TM Special Purpose Registers */ | ||||
| #define NT_PPC_TM_CTAR                      \ | ||||
|     0x10d /* TM checkpointed Target Address \
 | ||||
|            * Register                       \ | ||||
|            */ | ||||
| #define NT_PPC_TM_CPPR                        \ | ||||
|     0x10e /* TM checkpointed Program Priority \
 | ||||
|            * Register                         \ | ||||
|            */ | ||||
| #define NT_PPC_TM_CDSCR                          \ | ||||
|     0x10f /* TM checkpointed Data Stream Control \
 | ||||
|            * Register                            \ | ||||
|            */ | ||||
| #define NT_PPC_PKEY                                         \ | ||||
|     0x110                         /* Memory Protection Keys \
 | ||||
|                                    * registers.             \ | ||||
|                                    */ | ||||
| #define NT_386_TLS 0x200          /* i386 TLS slots (struct user_desc) */ | ||||
| #define NT_386_IOPERM 0x201       /* x86 io permission bitmap (1=deny) */ | ||||
| #define NT_X86_XSTATE 0x202       /* x86 extended state using xsave */ | ||||
| #define NT_S390_HIGH_GPRS 0x300   /* s390 upper register halves */ | ||||
| #define NT_S390_TIMER 0x301       /* s390 timer register */ | ||||
| #define NT_S390_TODCMP 0x302      /* s390 TOD clock comparator register */ | ||||
| #define NT_S390_TODPREG 0x303     /* s390 TOD programmable register */ | ||||
| #define NT_S390_CTRS 0x304        /* s390 control registers */ | ||||
| #define NT_S390_PREFIX 0x305      /* s390 prefix register */ | ||||
| #define NT_S390_LAST_BREAK 0x306  /* s390 breaking event address */ | ||||
| #define NT_S390_SYSTEM_CALL 0x307 /* s390 system call restart data */ | ||||
| #define NT_S390_TDB 0x308         /* s390 transaction diagnostic block */ | ||||
| #define NT_S390_VXRS_LOW                                      \ | ||||
|     0x309                       /* s390 vector registers 0-15 \
 | ||||
|                                  * upper half.                \ | ||||
|                                  */ | ||||
| #define NT_S390_VXRS_HIGH 0x30a /* s390 vector registers 16-31.  */ | ||||
| #define NT_S390_GS_CB 0x30b     /* s390 guarded storage registers.  */ | ||||
| #define NT_S390_GS_BC                                        \ | ||||
|     0x30c                        /* s390 guarded storage     \
 | ||||
|                                   * broadcast control block. \ | ||||
|                                   */ | ||||
| #define NT_S390_RI_CB 0x30d      /* s390 runtime instrumentation.  */ | ||||
| #define NT_ARM_VFP 0x400         /* ARM VFP/NEON registers */ | ||||
| #define NT_ARM_TLS 0x401         /* ARM TLS register */ | ||||
| #define NT_ARM_HW_BREAK 0x402    /* ARM hardware breakpoint registers */ | ||||
| #define NT_ARM_HW_WATCH 0x403    /* ARM hardware watchpoint registers */ | ||||
| #define NT_ARM_SYSTEM_CALL 0x404 /* ARM system call number */ | ||||
| #define NT_ARM_SVE                         \ | ||||
|     0x405 /* ARM Scalable Vector Extension \
 | ||||
|            * registers                     \ | ||||
|            */ | ||||
| #define NT_ARM_PAC_MASK                 \ | ||||
|     0x406 /* ARM pointer authentication \
 | ||||
|            * code masks.                \ | ||||
|            */ | ||||
| #define NT_ARM_PACA_KEYS                \ | ||||
|     0x407 /* ARM pointer authentication \
 | ||||
|            * address keys.              \ | ||||
|            */ | ||||
| #define NT_ARM_PACG_KEYS                                    \ | ||||
|     0x408                     /* ARM pointer authentication \
 | ||||
|                                * generic key.               \ | ||||
|                                */ | ||||
| #define NT_VMCOREDD 0x700     /* Vmcore Device Dump Note.  */ | ||||
| #define NT_MIPS_DSP 0x800     /* MIPS DSP ASE registers.  */ | ||||
| #define NT_MIPS_FP_MODE 0x801 /* MIPS floating-point mode.  */ | ||||
| #define NT_MIPS_MSA 0x802     /* MIPS SIMD registers.  */ | ||||
| 
 | ||||
| /* Legal values for the note segment descriptor types for object files.  */ | ||||
| 
 | ||||
| #define NT_VERSION 1 /* Contains a version string.  */ | ||||
| 
 | ||||
| #endif /* __INCLUDE_ELF_H */ | ||||
							
								
								
									
										161
									
								
								core/iwasm/aot/debug/elf32.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								core/iwasm/aot/debug/elf32.h
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,161 @@ | |||
| /****************************************************************************
 | ||||
|  * include/elf32.h | ||||
|  * | ||||
|  * Licensed to the Apache Software Foundation (ASF) under one or more | ||||
|  * contributor license agreements.  See the NOTICE file distributed with | ||||
|  * this work for additional information regarding copyright ownership.  The | ||||
|  * ASF licenses this file to you 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. | ||||
|  * | ||||
|  ****************************************************************************/ | ||||
| 
 | ||||
| #ifndef __INCLUDE_ELF32_H | ||||
| #define __INCLUDE_ELF32_H | ||||
| 
 | ||||
| /****************************************************************************
 | ||||
|  * Included Files | ||||
|  ****************************************************************************/ | ||||
| 
 | ||||
| #include <stdint.h> | ||||
| 
 | ||||
| /****************************************************************************
 | ||||
|  * Pre-processor Definitions | ||||
|  ****************************************************************************/ | ||||
| 
 | ||||
| #define ELF32_ST_BIND(i) ((i) >> 4) | ||||
| #define ELF32_ST_TYPE(i) ((i)&0xf) | ||||
| #define ELF32_ST_INFO(b, t) (((b) << 4) | ((t)&0xf)) | ||||
| 
 | ||||
| /* Definitions for Elf32_Rel*::r_info */ | ||||
| 
 | ||||
| #define ELF32_R_SYM(i) ((i) >> 8) | ||||
| #define ELF32_R_TYPE(i) ((i)&0xff) | ||||
| #define ELF32_R_INFO(s, t) (((s) << 8) | ((t)&0xff)) | ||||
| 
 | ||||
| #if 0 | ||||
| #define ELF_R_SYM(i) ELF32_R_SYM(i) | ||||
| #endif | ||||
| 
 | ||||
| /****************************************************************************
 | ||||
|  * Public Type Definitions | ||||
|  ****************************************************************************/ | ||||
| 
 | ||||
| /* Figure 4.2: 32-Bit Data Types */ | ||||
| 
 | ||||
| typedef uint32_t Elf32_Addr; /* Unsigned program address */ | ||||
| typedef uint16_t Elf32_Half; /* Unsigned medium integer */ | ||||
| typedef uint32_t Elf32_Off;  /* Unsigned file offset */ | ||||
| typedef int32_t Elf32_Sword; /* Signed large integer */ | ||||
| typedef uint32_t Elf32_Word; /* Unsigned large integer */ | ||||
| 
 | ||||
| /* Figure 4-3: ELF Header */ | ||||
| 
 | ||||
| typedef struct { | ||||
|     unsigned char e_ident[EI_NIDENT]; | ||||
|     Elf32_Half e_type; | ||||
|     Elf32_Half e_machine; | ||||
|     Elf32_Word e_version; | ||||
|     Elf32_Addr e_entry; | ||||
|     Elf32_Off e_phoff; | ||||
|     Elf32_Off e_shoff; | ||||
|     Elf32_Word e_flags; | ||||
|     Elf32_Half e_ehsize; | ||||
|     Elf32_Half e_phentsize; | ||||
|     Elf32_Half e_phnum; | ||||
|     Elf32_Half e_shentsize; | ||||
|     Elf32_Half e_shnum; | ||||
|     Elf32_Half e_shstrndx; | ||||
| } Elf32_Ehdr; | ||||
| 
 | ||||
| /* Figure 4-8: Section Header */ | ||||
| 
 | ||||
| typedef struct { | ||||
|     Elf32_Word sh_name; | ||||
|     Elf32_Word sh_type; | ||||
|     Elf32_Word sh_flags; | ||||
|     Elf32_Addr sh_addr; | ||||
|     Elf32_Off sh_offset; | ||||
|     Elf32_Word sh_size; | ||||
|     Elf32_Word sh_link; | ||||
|     Elf32_Word sh_info; | ||||
|     Elf32_Word sh_addralign; | ||||
|     Elf32_Word sh_entsize; | ||||
| } Elf32_Shdr; | ||||
| 
 | ||||
| /* Figure 4-15: Symbol Table Entry */ | ||||
| 
 | ||||
| typedef struct { | ||||
|     Elf32_Word st_name; | ||||
|     Elf32_Addr st_value; | ||||
|     Elf32_Word st_size; | ||||
|     unsigned char st_info; | ||||
|     unsigned char st_other; | ||||
|     Elf32_Half st_shndx; | ||||
| } Elf32_Sym; | ||||
| 
 | ||||
| /* Figure 4-19: Relocation Entries */ | ||||
| 
 | ||||
| typedef struct { | ||||
|     Elf32_Addr r_offset; | ||||
|     Elf32_Word r_info; | ||||
| } Elf32_Rel; | ||||
| 
 | ||||
| typedef struct { | ||||
|     Elf32_Addr r_offset; | ||||
|     Elf32_Word r_info; | ||||
|     Elf32_Sword r_addend; | ||||
| } Elf32_Rela; | ||||
| 
 | ||||
| /* Figure 5-1: Program Header */ | ||||
| 
 | ||||
| typedef struct { | ||||
|     Elf32_Word p_type; | ||||
|     Elf32_Off p_offset; | ||||
|     Elf32_Addr p_vaddr; | ||||
|     Elf32_Addr p_paddr; | ||||
|     Elf32_Word p_filesz; | ||||
|     Elf32_Word p_memsz; | ||||
|     Elf32_Word p_flags; | ||||
|     Elf32_Word p_align; | ||||
| } Elf32_Phdr; | ||||
| 
 | ||||
| /* Figure 5-7: Note Information */ | ||||
| 
 | ||||
| typedef struct { | ||||
|     Elf32_Word n_namesz; /* Length of the note's name.  */ | ||||
|     Elf32_Word n_descsz; /* Length of the note's descriptor.  */ | ||||
|     Elf32_Word n_type;   /* Type of the note.  */ | ||||
| } Elf32_Nhdr; | ||||
| 
 | ||||
| /* Figure 5-9: Dynamic Structure */ | ||||
| 
 | ||||
| typedef struct { | ||||
|     Elf32_Sword d_tag; | ||||
|     union { | ||||
|         Elf32_Word d_val; | ||||
|         Elf32_Addr d_ptr; | ||||
|     } d_un; | ||||
| } Elf32_Dyn; | ||||
| 
 | ||||
| #if 0 | ||||
| typedef Elf32_Addr  Elf_Addr; | ||||
| typedef Elf32_Ehdr  Elf_Ehdr; | ||||
| typedef Elf32_Rel   Elf_Rel; | ||||
| typedef Elf32_Rela  Elf_Rela; | ||||
| typedef Elf32_Nhdr  Elf_Nhdr; | ||||
| typedef Elf32_Phdr  Elf_Phdr; | ||||
| typedef Elf32_Sym   Elf_Sym; | ||||
| typedef Elf32_Shdr  Elf_Shdr; | ||||
| typedef Elf32_Word  Elf_Word; | ||||
| #endif | ||||
| 
 | ||||
| #endif /* __INCLUDE_ELF32_H */ | ||||
							
								
								
									
										161
									
								
								core/iwasm/aot/debug/elf64.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								core/iwasm/aot/debug/elf64.h
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,161 @@ | |||
| /****************************************************************************
 | ||||
|  * include/elf64.h | ||||
|  * | ||||
|  * Licensed to the Apache Software Foundation (ASF) under one or more | ||||
|  * contributor license agreements.  See the NOTICE file distributed with | ||||
|  * this work for additional information regarding copyright ownership.  The | ||||
|  * ASF licenses this file to you 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. | ||||
|  * | ||||
|  ****************************************************************************/ | ||||
| 
 | ||||
| #ifndef __INCLUDE_ELF64_H | ||||
| #define __INCLUDE_ELF64_H | ||||
| 
 | ||||
| /****************************************************************************
 | ||||
|  * Included Files | ||||
|  ****************************************************************************/ | ||||
| 
 | ||||
| #include <stdint.h> | ||||
| 
 | ||||
| /****************************************************************************
 | ||||
|  * Pre-processor Definitions | ||||
|  ****************************************************************************/ | ||||
| 
 | ||||
| /* See ELF-64 Object File Format: Version 1.5 Draft 2 */ | ||||
| 
 | ||||
| /* Definitions for Elf64_Rel*::r_info */ | ||||
| 
 | ||||
| #define ELF64_R_SYM(i) ((i) >> 32) | ||||
| #define ELF64_R_TYPE(i) ((i)&0xffffffffL) | ||||
| #define ELF64_R_INFO(s, t) (((s) << 32) + ((t)&0xffffffffL)) | ||||
| 
 | ||||
| #if 0 | ||||
| #define ELF_R_SYM(i) ELF64_R_SYM(i) | ||||
| #endif | ||||
| 
 | ||||
| /****************************************************************************
 | ||||
|  * Public Type Definitions | ||||
|  ****************************************************************************/ | ||||
| 
 | ||||
| /* Table 1: ELF-64 Data Types */ | ||||
| 
 | ||||
| typedef uint64_t Elf64_Addr;  /* Unsigned program address */ | ||||
| typedef uint64_t Elf64_Off;   /* Unsigned file offset */ | ||||
| typedef uint16_t Elf64_Half;  /* Unsigned medium integer */ | ||||
| typedef uint32_t Elf64_Word;  /* Unsigned long integer */ | ||||
| typedef int32_t Elf64_Sword;  /* Signed integer */ | ||||
| typedef uint64_t Elf64_Xword; /* Unsigned long integer */ | ||||
| typedef int64_t Elf64_Sxword; /* Signed large integer */ | ||||
| 
 | ||||
| /* Figure 2: ELF-64 Header */ | ||||
| 
 | ||||
| typedef struct { | ||||
|     unsigned char e_ident[EI_NIDENT]; /* ELF identification */ | ||||
|     Elf64_Half e_type;                /* Object file type */ | ||||
|     Elf64_Half e_machine;             /* Machine type */ | ||||
|     Elf64_Word e_version;             /* Object file version */ | ||||
|     Elf64_Addr e_entry;               /* Entry point address */ | ||||
|     Elf64_Off e_phoff;                /* Program header offset */ | ||||
|     Elf64_Off e_shoff;                /* Section header offset */ | ||||
|     Elf64_Word e_flags;               /* Processor-specific flags */ | ||||
|     Elf64_Half e_ehsize;              /* ELF header size */ | ||||
|     Elf64_Half e_phentsize;           /* Size of program header entry */ | ||||
|     Elf64_Half e_phnum;               /* Number of program header entry */ | ||||
|     Elf64_Half e_shentsize;           /* Size of section header entry */ | ||||
|     Elf64_Half e_shnum;               /* Number of section header entries */ | ||||
|     Elf64_Half e_shstrndx;            /* Section name string table index */ | ||||
| } Elf64_Ehdr; | ||||
| 
 | ||||
| /* Figure 3: ELF-64 Section Header */ | ||||
| 
 | ||||
| typedef struct { | ||||
|     Elf64_Word sh_name;       /* Section name */ | ||||
|     Elf64_Word sh_type;       /* Section type */ | ||||
|     Elf64_Xword sh_flags;     /* Section attributes */ | ||||
|     Elf64_Addr sh_addr;       /* Virtual address in memory */ | ||||
|     Elf64_Off sh_offset;      /* Offset in file */ | ||||
|     Elf64_Xword sh_size;      /* Size of section */ | ||||
|     Elf64_Word sh_link;       /* Link to other section */ | ||||
|     Elf64_Word sh_info;       /* Miscellaneous information */ | ||||
|     Elf64_Xword sh_addralign; /* Address alignment boundary */ | ||||
|     Elf64_Xword sh_entsize;   /* Size of entries, if section has table */ | ||||
| } Elf64_Shdr; | ||||
| 
 | ||||
| /* Figure 4: ELF-64 Symbol Table Entry */ | ||||
| 
 | ||||
| typedef struct { | ||||
|     Elf64_Word st_name;     /* Symbol name */ | ||||
|     unsigned char st_info;  /* Type and Binding attributes */ | ||||
|     unsigned char st_other; /* Reserved */ | ||||
|     Elf64_Half st_shndx;    /* Section table index */ | ||||
|     Elf64_Addr st_value;    /* Symbol value */ | ||||
|     Elf64_Xword st_size;    /* Size of object (e.g., common) */ | ||||
| } Elf64_Sym; | ||||
| 
 | ||||
| /* Figure 5: ELF-64 Relocation Entries */ | ||||
| 
 | ||||
| typedef struct { | ||||
|     Elf64_Addr r_offset; /* Address of reference */ | ||||
|     Elf64_Xword r_info;  /* Symbol index and type of relocation */ | ||||
| } Elf64_Rel; | ||||
| 
 | ||||
| typedef struct { | ||||
|     Elf64_Addr r_offset;   /* Address of reference */ | ||||
|     Elf64_Xword r_info;    /* Symbol index and type of relocation */ | ||||
|     Elf64_Sxword r_addend; /* Constant part of expression */ | ||||
| } Elf64_Rela; | ||||
| 
 | ||||
| /* Figure 6: ELF-64 Program Header Table Entry */ | ||||
| 
 | ||||
| typedef struct { | ||||
|     Elf64_Word p_type;   /* Type of segment */ | ||||
|     Elf64_Word p_flags;  /* Segment attributes */ | ||||
|     Elf64_Off p_offset;  /* Offset in file */ | ||||
|     Elf64_Addr p_vaddr;  /* Virtual address in memory */ | ||||
|     Elf64_Addr p_paddr;  /* Reserved */ | ||||
|     Elf64_Word p_filesz; /* Size of segment in file */ | ||||
|     Elf64_Word p_memsz;  /* Size of segment in memory */ | ||||
|     Elf64_Word p_align;  /* Alignment of segment */ | ||||
| } Elf64_Phdr; | ||||
| 
 | ||||
| /* Figure 7. Format of a Note Section */ | ||||
| 
 | ||||
| typedef struct { | ||||
|     Elf64_Word n_namesz; /* Length of the note's name.  */ | ||||
|     Elf64_Word n_descsz; /* Length of the note's descriptor.  */ | ||||
|     Elf64_Word n_type;   /* Type of the note.  */ | ||||
| } Elf64_Nhdr; | ||||
| 
 | ||||
| /* Figure 8: Dynamic Table Structure */ | ||||
| 
 | ||||
| typedef struct { | ||||
|     Elf64_Sxword d_tag; | ||||
|     union { | ||||
|         Elf64_Xword d_val; | ||||
|         Elf64_Addr d_ptr; | ||||
|     } d_un; | ||||
| } Elf64_Dyn; | ||||
| 
 | ||||
| #if 0 | ||||
| typedef Elf64_Addr  Elf_Addr; | ||||
| typedef Elf64_Ehdr  Elf_Ehdr; | ||||
| typedef Elf64_Rel   Elf_Rel; | ||||
| typedef Elf64_Rela  Elf_Rela; | ||||
| typedef Elf64_Nhdr  Elf_Nhdr; | ||||
| typedef Elf64_Phdr  Elf_Phdr; | ||||
| typedef Elf64_Sym   Elf_Sym; | ||||
| typedef Elf64_Shdr  Elf_Shdr; | ||||
| typedef Elf64_Word  Elf_Word; | ||||
| #endif | ||||
| 
 | ||||
| #endif /* __INCLUDE_ELF64_H */ | ||||
|  | @ -12,7 +12,7 @@ | |||
| #include <errno.h> | ||||
| #include <stdbool.h> | ||||
| 
 | ||||
| #include <elf.h> | ||||
| #include "elf.h" | ||||
| 
 | ||||
| #include "aot_runtime.h" | ||||
| #include "bh_log.h" | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 YAMAMOTO Takashi
						YAMAMOTO Takashi