Skip to content
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

Shared library support #5

Open
SamuraiCrow opened this issue Jan 6, 2020 · 5 comments
Open

Shared library support #5

SamuraiCrow opened this issue Jan 6, 2020 · 5 comments
Labels
enhancement New feature or request
Milestone

Comments

@SamuraiCrow
Copy link
Contributor

Add support for true shared libraries in all targets.

@SamuraiCrow
Copy link
Contributor Author

Per-opener and regular shared-libraries should both be supported as options.

@SamuraiCrow
Copy link
Contributor Author

Merged with #26

@SamuraiCrow SamuraiCrow added the duplicate This issue or pull request already exists label May 1, 2023
@Hypexed
Copy link

Hypexed commented Jul 21, 2023

I was going to ask what was meant by shared libraries. But see it clarified in a comment. Library bases dynamically produced for each opener are in fact standard but don't tend to be as common. As an example, a bsdsocket.library does this.

This would create more overhead while limiting a custom library base. E does this so as to embed an E environment or E runtime so all E functions can be called as usual. ECX uses the same kind of method.

I agree this should be expanded upon. It's why I avoid using library mode for anything. I tend to create the library from inside a commodity but this cannot be done for a proper library or device file. It would be good if the E runtime didn't use the library base, though I can see why, but instead use some global space reachable as direct address or PC relative for it's own use. In addition, it would be good to save and restore and global registers, with a keyword rather that require some non-portable ASM hacking or custom module. Including be able to reference any local and global pointer by alias such as GLOBALBASE or similar. Also being able to specify register parameters would help. As well as any other options for specific use cases like interrupts.

@SamuraiCrow
Copy link
Contributor Author

I think a "shared" library differs mainly in startup code from per-opener library. I'm not so sure that the GCC issue will cover this either. Reopening.

@SamuraiCrow SamuraiCrow removed the duplicate This issue or pull request already exists label Jul 31, 2023
@SamuraiCrow SamuraiCrow added this to the Release 1.0 milestone Jul 31, 2023
@SamuraiCrow SamuraiCrow reopened this Jul 31, 2023
@SamuraiCrow
Copy link
Contributor Author

@Hypexed
Could interfaces be implemented into OS3 and MorphOS using a per-opener library as an interface to a shared library? If possible, issue #15 could be incorporated into the framework. I'll comment farther in #15 about the implementation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants