Skip to content

#pragma init_seg(section-specifier, func-name) not supported #148938

Open
@AdamGlass

Description

@AdamGlass

This MSVC pragma is only partially implemented. As detailed here, there is functionality to specify a function to call in place of atexit.

https://learn.microsoft.com/en-us/cpp/preprocessor/init-seg?view=msvc-170

"func-name
Specifies a function to be called in place of atexit when the program exits. This helper function also calls atexit with a pointer to the destructor for the global object. If you specify a function identifier in the pragma of the form,

C++

Copy
int __cdecl myexit (void (__cdecl *pf)(void))
then your function will be called instead of the C run-time library's atexit. It allows you to build a list of the destructors to call when you're ready to destroy the objects."

Relevant code in ParsePragma.cpp:Parser::HandlePragmaMSInitSeg:
// FIXME: Add support for the '[, func-name]' part of the pragma.

Maybe a good early OSS contribution given the limited use and lack of potential for regression

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions