Skip to content

[ATfE] LLVM libc semihosting support for file IO - #1041

Open
voltur01 wants to merge 1 commit into
arm:arm-softwarefrom
voltur01:libc_file_io
Open

[ATfE] LLVM libc semihosting support for file IO#1041
voltur01 wants to merge 1 commit into
arm:arm-softwarefrom
voltur01:libc_file_io

Conversation

@voltur01

@voltur01 voltur01 commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

This provides the semihosting implementation for the new LLVM libc file IO embedding API as discussed in https://discourse.llvm.org/t/rfc-llvm-libc-bare-metal-file-io-support-prototype/91662

The following embedding API libc/src/__support/OSUtil/baremetal/io.h functions are implemented:

  • __llvm_libc_stdio_open
  • __llvm_libc_stdio_close
  • __llvm_libc_stdio_seek
  • __llvm_libc_stdio_set_buffer
  • __llvm_libc_stdio_flush
  • __llvm_libc_stdio_ungetc
  • __llvm_libc_stdio_remove
  • __llvm_libc_stdio_rename

__llvm_libc_stdio_ungetc is not provided since the semihosting implementation is unbuffered, so the original LLVM libc single char ungetc behavior is kept.

The semihosting implementation keeps a small struct as the cookie with either just the semihosting handle for standard streams or also current position to support seeking for file streams.

This provides the semihosting implementation for the new LLVM libc file IO
embedding API as discussed in https://discourse.llvm.org/t/rfc-llvm-libc-bare-metal-file-io-support-prototype/91662

The following embedding API libc/src/__support/OSUtil/baremetal/io.h functions
are implemented:

- __llvm_libc_stdio_open
- __llvm_libc_stdio_close
- __llvm_libc_stdio_seek
- __llvm_libc_stdio_set_buffer
- __llvm_libc_stdio_flush
- __llvm_libc_stdio_ungetc
- __llvm_libc_stdio_remove
- __llvm_libc_stdio_rename

__llvm_libc_stdio_ungetc is not provided since the semihosting implementation is unbuffered, so the original LLVM libc single char ungetc behavior is kept.

The semihosting implementation keeps a small struct as the cookie with either
just the semihosting handle for standard streams or also current position
to support seeking for file streams.
@voltur01
voltur01 requested a review from a team as a code owner September 4, 2026 12:18
@voltur01

voltur01 commented Sep 4, 2026

Copy link
Copy Markdown
Contributor Author

Depends on the LLVM libc embedding API: llvm/llvm-project#221211

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant