| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[libc] Add boot code for AArch64 (#154789) This is required in hermetic testing downstream. It is not complete, and will not work on hardware, however it runs on QEMU, and can report a pass/fail on our tests. | 11 个月前 | |
[libc] Add support for MVE to Arm startup code (#167338) In order to have MVE support, the same bits of the CPACR register that enable the floating-point extension must be set. | 8 个月前 | |
[libc] Basic implementation of crt0 (#146863) In order to run hermetic tests downstream (#145349), we need startup code. This is based on the crt0 that is present in Arm Toolchain: https://github.com/arm/arm-toolchain/tree/5446a3cbf4ef73196ccce490fc9fbf87bee093aa/arm-software/embedded/llvmlibc-support/crt0. Note that some tests do fail due to lack of hardware setup, which will be implemented at a later time. Most of the CMake/structure is a copy from the existing code in both libc/startup/linux and libc/startup/gpu. It is required to build an object file to be linked with. Also add header files for init/fini such that crt0 can use the provided symbols. --------- Co-authored-by: Michael Jones <michaelrj@google.com> | 11 个月前 | |
[libc] Basic implementation of crt0 (#146863) In order to run hermetic tests downstream (#145349), we need startup code. This is based on the crt0 that is present in Arm Toolchain: https://github.com/arm/arm-toolchain/tree/5446a3cbf4ef73196ccce490fc9fbf87bee093aa/arm-software/embedded/llvmlibc-support/crt0. Note that some tests do fail due to lack of hardware setup, which will be implemented at a later time. Most of the CMake/structure is a copy from the existing code in both libc/startup/linux and libc/startup/gpu. It is required to build an object file to be linked with. Also add header files for init/fini such that crt0 can use the provided symbols. --------- Co-authored-by: Michael Jones <michaelrj@google.com> | 11 个月前 | |
[libc] Move preinit/init/fini arrays to namespace (#158746) In change #146863 we moved definitions of preinit/init/fini arrays to header but unintentionally moved outside of the namespace. Since the namespace also controls the visibility (through LIBC_NAMESPACE_DECL), as a consequence these symbols no longer have the hidden visibility which changes the codegen from: 4: 4c11 ldr r4, [pc, #0x44] @ 0x4c <__libc_init_array+0x4c> 6: 4812 ldr r0, [pc, #0x48] @ 0x50 <__libc_init_array+0x50> 8: 447c add r4, pc a: 4478 add r0, pc c: 1b00 subs r0, r0, r4 to: 4: 4813 ldr r0, [pc, #0x4c] @ 0x54 <__libc_init_array+0x54> 6: 4914 ldr r1, [pc, #0x50] @ 0x58 <__libc_init_array+0x58> 8: 4478 add r0, pc a: 4479 add r1, pc c: 6804 ldr r4, [r0] e: 6808 ldr r0, [r1] 10: 1b00 subs r0, r0, r4 The ldr will trigger a fault in case where these symbols aren't pointing to a valid memory location which is sometimes the case when the array is empty. | 10 个月前 | |
[libc] Basic implementation of crt0 (#146863) In order to run hermetic tests downstream (#145349), we need startup code. This is based on the crt0 that is present in Arm Toolchain: https://github.com/arm/arm-toolchain/tree/5446a3cbf4ef73196ccce490fc9fbf87bee093aa/arm-software/embedded/llvmlibc-support/crt0. Note that some tests do fail due to lack of hardware setup, which will be implemented at a later time. Most of the CMake/structure is a copy from the existing code in both libc/startup/linux and libc/startup/gpu. It is required to build an object file to be linked with. Also add header files for init/fini such that crt0 can use the provided symbols. --------- Co-authored-by: Michael Jones <michaelrj@google.com> | 11 个月前 | |
[libc] Move preinit/init/fini arrays to namespace (#158746) In change #146863 we moved definitions of preinit/init/fini arrays to header but unintentionally moved outside of the namespace. Since the namespace also controls the visibility (through LIBC_NAMESPACE_DECL), as a consequence these symbols no longer have the hidden visibility which changes the codegen from: 4: 4c11 ldr r4, [pc, #0x44] @ 0x4c <__libc_init_array+0x4c> 6: 4812 ldr r0, [pc, #0x48] @ 0x50 <__libc_init_array+0x50> 8: 447c add r4, pc a: 4478 add r0, pc c: 1b00 subs r0, r0, r4 to: 4: 4813 ldr r0, [pc, #0x4c] @ 0x54 <__libc_init_array+0x54> 6: 4914 ldr r1, [pc, #0x50] @ 0x58 <__libc_init_array+0x58> 8: 4478 add r0, pc a: 4479 add r1, pc c: 6804 ldr r4, [r0] e: 6808 ldr r0, [r1] 10: 1b00 subs r0, r0, r4 The ldr will trigger a fault in case where these symbols aren't pointing to a valid memory location which is sometimes the case when the array is empty. | 10 个月前 |