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

Additional Assembler Files for Linux Kernel #430

merged 6 commits into from Nov 28, 2018


Copy link

@lsgunth lsgunth commented Nov 19, 2018

This pull request addresses issue #428.

The patchset adds some unit tests and improves the way assembler arguments are parsed (those that begin with -Wa). Any files specified with -Wa are added to the extra files included in the environment.

It was also necessary to remove the forced -pipe option as this is incompatible with extra assembly files (with GCC) and the benefits of this are dubious at best.

With the patchset, compiling the latest version of the Linux kernel will properly distribute all compile steps.

This is to ensure we don't break existing functionality
in subsequent patches.
This patch should have no functional changes besides handling
a few more esoteric cases of assembler arguments.

The -Wa arguments are split by comma and analyzed one by one with
a new helper function.
According to the gas help file there are two options that
have two arguments where the second argument does not start
with a hyphen (--debug-prefix-map OLD=NEW and --defsym SYM=VAL).
With the current code, these arguments will be forced to run
locally, even though there's no good reason for that.
Any assembler option beginning with @ specifies more options that
must be in a file. Instead of trying to parse all of those arguments,
we just force that file to run locally.
The -pipe flag does not work when passing additional assembly
files with -Wa. GCC is not smart enough to add an additional '-'
argument to ensure the assembler still reads from stdin when there are
additional files passed through -Wa.

Additionally, as a matter of policy, I think it's wrong for icecc
to enforce using -pipe and should be left to the individual build
systems to make this decision.

Besides that, in this day and age, the performance benefits of
-pipe are dubious at best.
The Linux kernel has started passing an extra assembly file to all
compilation steps in order to add globally available inline macros.
It does this by passing an extra file using -Wa. Currently this causes
icecc to force the build locally which means compiling the kernel
cannot be distributed.

In order to support this in icecc, we add any such files to
the extra files in the environment.
@HenryMiller1 HenryMiller1 merged commit 69caa4a into icecc:master Nov 28, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
None yet

Successfully merging this pull request may close these issues.

None yet

2 participants