Skip to content

Enable libc++ error messages in debug builds #24543

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 10, 2025

Conversation

sbc100
Copy link
Collaborator

@sbc100 sbc100 commented Jun 10, 2025

Fixes: #24541

@sbc100 sbc100 changed the title Enable libc++ error message in debug builds Enable libc++ error messages in debug builds Jun 10, 2025
@sbc100 sbc100 requested a review from kripken June 10, 2025 17:12
sbc100 added a commit to sbc100/llvm-project that referenced this pull request Jun 10, 2025
This newline was originally added in https://reviews.llvm.org/D142184
but I think updating `__libcpp_verbose_abort` to add newline instead
is more consistent, and works for other callers of
`_LIBCPP_VERBOSE_ABORT`.

The `_LIBCPP_ASSERTION_HANDLER` calls through to either
`_LIBCPP_VERBOSE_ABORT` macro or the `__builtin_verbose_trap`
From what I can tell neither of these function expect a trailing
newline (At least non of the usage of `_LIBCPP_VERBOSE_ABORT` or
`__builtin_verbose_trap` that I can find include a trailing newline
except _LIBCPP_ASSERTION_HANDLER).

I noticed this discrepancy when working on
emscripten-core/emscripten#24543
@sbc100
Copy link
Collaborator Author

sbc100 commented Jun 10, 2025

I filed llvm/llvm-project#143573 upstream in llvm to see if we can avoid carrying the libc++ patch going forward.

@sbc100 sbc100 requested a review from dschuff June 10, 2025 17:33
sbc100 added a commit to sbc100/llvm-project that referenced this pull request Jun 10, 2025
This newline was originally added in https://reviews.llvm.org/D142184
but I think updating `__libcpp_verbose_abort` to add newline instead
is more consistent, and works for other callers of
`_LIBCPP_VERBOSE_ABORT`.

The `_LIBCPP_ASSERTION_HANDLER` calls through to either
`_LIBCPP_VERBOSE_ABORT` macro or the `__builtin_verbose_trap`
From what I can tell neither of these function expect a trailing
newline (At least non of the usage of `_LIBCPP_VERBOSE_ABORT` or
`__builtin_verbose_trap` that I can find include a trailing newline
except _LIBCPP_ASSERTION_HANDLER).

I noticed this discrepancy when working on
emscripten-core/emscripten#24543
sbc100 added a commit to sbc100/llvm-project that referenced this pull request Jun 10, 2025
This newline was originally added in https://reviews.llvm.org/D142184
but I think updating `__libcpp_verbose_abort` to add newline instead
is more consistent, and works for other callers of
`_LIBCPP_VERBOSE_ABORT`.

The `_LIBCPP_ASSERTION_HANDLER` calls through to either
`_LIBCPP_VERBOSE_ABORT` macro or the `__builtin_verbose_trap`
From what I can tell neither of these function expect a trailing
newline (At least non of the usage of `_LIBCPP_VERBOSE_ABORT` or
`__builtin_verbose_trap` that I can find include a trailing newline
except _LIBCPP_ASSERTION_HANDLER).

I noticed this discrepancy when working on
emscripten-core/emscripten#24543
sbc100 added a commit to sbc100/llvm-project that referenced this pull request Jun 10, 2025
This newline was originally added in https://reviews.llvm.org/D142184
but I think updating `__libcpp_verbose_abort` to add newline instead
is more consistent, and works for other callers of
`_LIBCPP_VERBOSE_ABORT`.

The `_LIBCPP_ASSERTION_HANDLER` calls through to either
`_LIBCPP_VERBOSE_ABORT` macro or the `__builtin_verbose_trap`
From what I can tell neither of these function expect a trailing
newline (At least non of the usage of `_LIBCPP_VERBOSE_ABORT` or
`__builtin_verbose_trap` that I can find include a trailing newline
except _LIBCPP_ASSERTION_HANDLER).

I noticed this discrepancy when working on
emscripten-core/emscripten#24543
@sbc100 sbc100 force-pushed the verbose_abort branch 4 times, most recently from 4275051 to 1b48188 Compare June 10, 2025 20:05
@sbc100 sbc100 merged commit ac84275 into emscripten-core:main Jun 10, 2025
3 of 13 checks passed
@sbc100 sbc100 deleted the verbose_abort branch June 10, 2025 21:06
// passed to __libcpp_verbose_abort. The _LIBCPP_VERBOSE_ABORT macro seems to never use
// newlines, but _LIBCPP_ASSERTION_HANDLER does include a newline.
if (format[strlen(format) - 1] != '\n') {
std::fprintf(stderr, "\n");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this could be std::fputs instead?

sbc100 added a commit to sbc100/llvm-project that referenced this pull request Jun 10, 2025
This newline was originally added in https://reviews.llvm.org/D142184
but I think updating `__libcpp_verbose_abort` to add newline instead
is more consistent, and works for other callers of
`_LIBCPP_VERBOSE_ABORT`.

The `_LIBCPP_ASSERTION_HANDLER` calls through to either
`_LIBCPP_VERBOSE_ABORT` macro or the `__builtin_verbose_trap`
From what I can tell neither of these function expect a trailing
newline (At least non of the usage of `_LIBCPP_VERBOSE_ABORT` or
`__builtin_verbose_trap` that I can find include a trailing newline
except _LIBCPP_ASSERTION_HANDLER).

I noticed this discrepancy when working on
emscripten-core/emscripten#24543
sbc100 added a commit to sbc100/llvm-project that referenced this pull request Jun 10, 2025
This newline was originally added in https://reviews.llvm.org/D142184
but I think updating `__libcpp_verbose_abort` to add newline instead
is more consistent, and works for other callers of
`_LIBCPP_VERBOSE_ABORT`.

The `_LIBCPP_ASSERTION_HANDLER` calls through to either
`_LIBCPP_VERBOSE_ABORT` macro or the `__builtin_verbose_trap`
From what I can tell neither of these function expect a trailing
newline (At least non of the usage of `_LIBCPP_VERBOSE_ABORT` or
`__builtin_verbose_trap` that I can find include a trailing newline
except _LIBCPP_ASSERTION_HANDLER).

I noticed this discrepancy when working on
emscripten-core/emscripten#24543
sbc100 added a commit to sbc100/emscripten that referenced this pull request Jun 10, 2025
sbc100 added a commit to sbc100/llvm-project that referenced this pull request Jun 11, 2025
This newline was originally added in https://reviews.llvm.org/D142184
but I think updating `__libcpp_verbose_abort` to add newline instead
is more consistent, and works for other callers of
`_LIBCPP_VERBOSE_ABORT`.

The `_LIBCPP_ASSERTION_HANDLER` calls through to either
`_LIBCPP_VERBOSE_ABORT` macro or the `__builtin_verbose_trap`
From what I can tell neither of these function expect a trailing
newline (At least non of the usage of `_LIBCPP_VERBOSE_ABORT` or
`__builtin_verbose_trap` that I can find include a trailing newline
except _LIBCPP_ASSERTION_HANDLER).

I noticed this discrepancy when working on
emscripten-core/emscripten#24543
sbc100 added a commit that referenced this pull request Jun 11, 2025
sbc100 added a commit to sbc100/llvm-project that referenced this pull request Jun 12, 2025
This newline was originally added in https://reviews.llvm.org/D142184
but I think updating `__libcpp_verbose_abort` to add newline instead
is more consistent, and works for other callers of
`_LIBCPP_VERBOSE_ABORT`.

The `_LIBCPP_ASSERTION_HANDLER` calls through to either
`_LIBCPP_VERBOSE_ABORT` macro or the `__builtin_verbose_trap`
From what I can tell neither of these function expect a trailing
newline (At least non of the usage of `_LIBCPP_VERBOSE_ABORT` or
`__builtin_verbose_trap` that I can find include a trailing newline
except _LIBCPP_ASSERTION_HANDLER).

I noticed this discrepancy when working on
emscripten-core/emscripten#24543
ldionne pushed a commit to llvm/llvm-project that referenced this pull request Jun 17, 2025
…#143573)

This newline was originally added in https://reviews.llvm.org/D142184
but I think updating `__libcpp_verbose_abort` to add newline instead is
more consistent, and works for other callers of `_LIBCPP_VERBOSE_ABORT`.

The `_LIBCPP_ASSERTION_HANDLER` calls through to either
`_LIBCPP_VERBOSE_ABORT` macro or the `__builtin_verbose_trap`. From what
I can tell neither of these function expect a trailing newline (at least
none of the usage of `_LIBCPP_VERBOSE_ABORT` or `__builtin_verbose_trap`
that I can find include a trailing newline except `_LIBCPP_ASSERTION_HANDLER`).

I noticed this discrepancy when working on
emscripten-core/emscripten#24543
llvm-sync bot pushed a commit to arm/arm-toolchain that referenced this pull request Jun 17, 2025
…NDLER calls (#143573)

This newline was originally added in https://reviews.llvm.org/D142184
but I think updating `__libcpp_verbose_abort` to add newline instead is
more consistent, and works for other callers of `_LIBCPP_VERBOSE_ABORT`.

The `_LIBCPP_ASSERTION_HANDLER` calls through to either
`_LIBCPP_VERBOSE_ABORT` macro or the `__builtin_verbose_trap`. From what
I can tell neither of these function expect a trailing newline (at least
none of the usage of `_LIBCPP_VERBOSE_ABORT` or `__builtin_verbose_trap`
that I can find include a trailing newline except `_LIBCPP_ASSERTION_HANDLER`).

I noticed this discrepancy when working on
emscripten-core/emscripten#24543
fschlimb pushed a commit to fschlimb/llvm-project that referenced this pull request Jun 18, 2025
…llvm#143573)

This newline was originally added in https://reviews.llvm.org/D142184
but I think updating `__libcpp_verbose_abort` to add newline instead is
more consistent, and works for other callers of `_LIBCPP_VERBOSE_ABORT`.

The `_LIBCPP_ASSERTION_HANDLER` calls through to either
`_LIBCPP_VERBOSE_ABORT` macro or the `__builtin_verbose_trap`. From what
I can tell neither of these function expect a trailing newline (at least
none of the usage of `_LIBCPP_VERBOSE_ABORT` or `__builtin_verbose_trap`
that I can find include a trailing newline except `_LIBCPP_ASSERTION_HANDLER`).

I noticed this discrepancy when working on
emscripten-core/emscripten#24543
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.

Internal libc++ error message (from __throw_system_error) are lost when exceptions are not enabled.
3 participants