Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • D dynamorio
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1,467
    • Issues 1,467
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 44
    • Merge requests 44
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • DynamoRIO
  • dynamorio
  • Issues
  • #1973
Closed
Open
Issue created Jul 15, 2016 by Administrator@rootContributor

build fails on musl-libc based linux systems (for example alpine, void, sabotage)

Created by: rofl0r

dynamorio-release_6_1_1/core/unix/os.c: In function 'handle_close_pre':
dynamorio-release_6_1_1/core/unix/os.c:5620:30: error: dereferencing pointer to incomplete type
dynamorio-release_6_1_1/core/unix/os.c:5636:30: error: dereferencing pointer to incomplete type
dynamorio-release_6_1_1/core/unix/os.c:5652:29: error: dereferencing pointer to incomplete type
make[2]: *** [core/CMakeFiles/dynamorio.dir/unix/os.c.o] Error 1

the code in question is

            /* update the privately loaded libc's stdout _fileno. */
            (*privmod_stdout)->STDFILE_FILENO = our_stdout;                     


            /* update the privately loaded libc's stderr _fileno. */            
            (*privmod_stderr)->STDFILE_FILENO = our_stderr;


            /* update the privately loaded libc's stdout _fileno. */            
            (*privmod_stdin)->STDFILE_FILENO = our_stdin;

FILE is an opaque type and it's illegal to make assumptions about or access the underlying struct from non-libc code. I'm currently talking with musl's author if there's a portable solution. the code in question was introduced to fix #261

Assignee
Assign to
Time tracking