Skip to content

Global constructors don't work on aarch64 #1479

Open
@ghaith

Description

@ghaith

Describe the bug
The global constructors segfault on arm architecures, they work fine with x86_64.

To Reproduce
Steps to reproduce the behavior:
The following code snippet is a minimal example that reproduces the issue:

FUNCTION main : DINT
    VAR i : DINT := 0; END_VAR
    WHILE i < 10 DO
        i := i + 1;
        mainProg();
    END_WHILE
END_FUNCTION


PROGRAM mainProg
VAR
    myFb_ref : REF_TO myFb := REF(myFb_inst);
END_VAR
    myFb_ref^();
    printf('mainProg executed$N');
END_PROGRAM

FUNCTION_BLOCK myFb
    VAR
        a,b,c : DINT;
    END_VAR
    a := a + 1;
    b := b + 2;
    c := a + b;
    printf('a: %d, b: %d, c: %d$N', a, b, c);
END_FUNCTION_BLOCK

VAR_GLOBAL
    myFb_inst : myFb := (a := 5, b := 10, c := 15);
END_VAR

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions