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

Quiet option to avoid displaying felixboot messages #174

Closed
razetime opened this issue Oct 22, 2022 · 5 comments
Closed

Quiet option to avoid displaying felixboot messages #174

razetime opened this issue Oct 22, 2022 · 5 comments

Comments

@razetime
Copy link
Collaborator

The basic flx script running command always outputs the following before the program's output:

BOOTFLX
[bootflx] flx

I would like to suggest an option -q or --quiet since I want to pipe output from my felix scripts to other commands/files in my shell.

@skaller
Copy link
Member

skaller commented Oct 26, 2022

no it doesn't, that's only the bootstrap version. If you're getting that you aren't running the full version.

~/felix>flx hello
Hello World!

@skaller
Copy link
Member

skaller commented Oct 26, 2022

Looking at your build problem in the email, the full version of flx is not being built. For some reason the linker is requiring a relocation stub whilst the build process is deliberately NOT using -fPIC to produce position independent code because that requires extra instructions and uses a machine register which non-PIC code does not. So non-PIC code executes faster.

PIC code (position independent code) is needed to call functions in a shared library, because it's not known until load time or even run time where the shared library is located in the address space. So PIC code jumps indirectly through a thing called the GOT table which is filled in at load time or run time with the actual addresses of the target. That's slower than non-PIC code where the address is resolved at link time and hard coded into the binary.

Non-PIC code doesn't use a GOT table. The problem you're having is that something is telling the linker to use the PIC style of linkage even though the whole purpose of --static switch is to avoid it. As an aside ALL modern systems dynamically link the C run time library because otherwise the code might be specific to a particular OS kernel version.

So I'm NOT sure what is causing the problem. GCC version 9 appears to be doing something different.

@skaller
Copy link
Member

skaller commented Oct 26, 2022

So roughly the problem is that I have no idea .. and the diagnostics from the linker do not help at all .. determine which particular object file is causing the error. Either that of the link command is incorrect and isn't telling the linker to do static linkage correctly. If all the files are non-PIC and the link is static this error cannot arise.. The only problem is that the C library might be relocatable but that would mean ALL C modules would require -fPIC in which case there'd be no point in the switch at all.

@razetime
Copy link
Collaborator Author

Thanks for the clarification. Moving conversation over to #175.

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

No branches or pull requests

2 participants