Age | Commit message (Collapse) | Author | Files | Lines |
|
Depending on how it was built, gcc will use the canary from a global
(works for us) or from the TLS (doesn't work for us and accesses
random stuff instead).
Fixing that would be tricky. There are talks of adding a gcc option
to force use of globals, but in the meantime, disable the stack
protector
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
[stewart@linux.vnet.ibm.com: add -fno-stack-protector]
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
(cherry picked from commit fe6f1f982b562ba855bb68fb51545f104078f546)
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
We use r13 for our own stuff, make sure it's properly fixed
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
(cherry picked from commit d45b9bc4f98dfeac3ce6ee906948b56944f6aa6b)
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
This greatly simplifies the build process for travis, yet makes it more
powerful and increases coverage without increasing wall time to test.
Travis has the concept of a build matrix, and we want to ensure we continue
to build succesfully on a variety of platforms and compiler combinations.
We limit what we run on some OSs to conserve vital sanity.
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Fixes build break on 32bit ppc64 (e.g. PowerMac G5, where user space
is mostly 32bit).
Fixes: https://github.com/open-power/skiboot/issues/42
Reported-by: Andrei Warkenti <andrey.warkentin@gmail.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
The full container header layout will be released soon either as
a separate github project or as part of hostboot.
This adds the secure boot header structures required by skiboot,
and also implements some helper routines related to containers.
Signed-off-by: Claudio Carvalho <cclaudio@linux.vnet.ibm.com>
[stewart@linux.vnet.ibm.com: Add unit test, print utility, use zero length
arrays to ensure sizeof() works correctly, add parsing function]
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
We set it already in DEBUG builds and we use -fstack-protector-strong
in release builds which provides most of the benefits and is more
efficient.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
This enables memory poisoning in allocations and list checking
among other things.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
And use it to control the stack checker, memory poisoning and
CCAN's list debugging.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Fixes: 5fc07eaa (Produce XZ compressed skiboot.lid as part of build)
CC: Stewart Smith <stewart@linux.vnet.ibm.com>
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
With a recent HostBoot change, we can have an XZ compressed PAYLOAD
that's automagically detected (looking at magic numbers).
This gives us three great benefits:
1) it's transparent, uncompressed skiboot.lid works everywhere
2) it lets us grow greater than 1MB binary, as long as we compress
down to <1MB
3) It speeds up boot. We currently compress down to 230kb rather than
922kb, which is much quicker to read off flash.
This patch produces skiboot.lid.xz alongside standard skiboot.lid.
We currently use crc32 as this is supported by hostboot. Future HB
may support crc64, but this seems to be disabled currently.
Having CRC32 in the PAYLOAD partition also gives the advantage of
error detection in PAYLOAD, which we previously did not have as it
was not an ECC protected partition.
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
.version is missing from the clean target. Fix this.
Found with 'make; make clean; git clean -dfx'
Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Include 'extract-gcov' in make clean.
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
|
|
The story of extract-gcov is not necessarily a pleasant one, involving
GCC internals, padding of data structures, differences in data structures
that are designed to change whenever GCC wants to and a strong desire
to not implement a VFS in skiboot or some other streaming interface
(and associated userspace and other such blergh).
This patch makes us be all explicit about padding in the structures,
enabling -Wpadding for extract-gcov.c.
We also get all strict over the size of things and add support for
gcc 5.1, which added an extra counter.
There is likely GCC hacking in my future to make this a lot less
fragile.
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
In commit 8f5b8616, we introduced a dependency on libgcc, for the
__builtin_parityl() function in commit 6cfaa3ba.
However, if we're building with a biarch compiler, we may not have a
libgcc available.
This commit removes the __builtin_parityl() call, and replaces with the
equivalent instructions, and removes the dependency on libgcc.
Although this is untested, I have confirmed that the __builtin_parityl()
functions emits the same instructions (on power7 and power8, with
gcc-4.9) as we're using in the parity() function.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
[stewart@linux.vnet.ibm.com: only use inline asm for skiboot build]
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
We create our own inttypes.h to get the correct printf formatting for
64bit numbers.
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
In commit 8f5b8616, we introduced a dependency on libgcc, for the
__builtin_parityl() function in commit 6cfaa3ba.
However, if we're building with a biarch compiler, we may not have a
libgcc available.
This commit removes the __builtin_parityl() call, and replaces with the
equivalent instructions, and removes the dependency on libgcc.
Although this is untested, I have confirmed that the __builtin_parityl()
functions emits the same instructions (on power7 and power8, with
gcc-4.9) as we're using in the parity() function.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
[stewart@linux.vnet.ibm.com: only use inline asm for skiboot build]
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Some versions of sparse (all?) don't support -std=gnu11 CFLAG, so filter
it out when calling sparse. Doesn't affect non-sparse build
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Include a bit of a hack to build gard for coverity too
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
We do not set a C version level, leaving it to the compiler to enforce
whatever it saw fit.
We require GCC 4.8 or above, which supports C11, and GCC 5.2 and clang
3.7 default to this version of the standard, so set it as the default.
Signed-off-by: Joel Stanley <joel@jms.id.au>
[stewart@linux.vnet.ibm.com: rework to use new try-cflag magic]
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Using vector instructions in skiboot needs care as we do not:
a) enable them during boot
b) save/restore the registers
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
We will now test if the compiler supports a certain complier flag
before using it (ones that have been introduced "recently").
We also add -mabi=elfv1 if compiler supports it (e.g. gcc 4.9)
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Previously there has been some uncertainty as to how separate binaries were
to be versioned compared to the firmware version as they could change (or
not change) out of sync with skiboot versioning. Historically pflash was
born with its own version which didn't help the issue.
It has been decided that make_version.sh should always return one version
which is shall be the skiboot firmware version, external binaries can
supply their own prefix which will be s/skiboot/$prefix/ but the default
behaviour is the git tag versioning.
The main reason for versioning here is so developers can identify which
version of the code someone is running, versions which closly match the
source tree are easiest to deal with. The idea with one version and
every binary getting a bump regardless of changes is that there is a lot of
shared code (libflash/libffs are a prime example) and even if an external
binary isn't explicitly updated it is possible that changes to shared code
may be missed.
This patch simplifies make_version.sh which had been updated to deal with
pflash- git tags.
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
The goal here is to be able to set tags for versions to some of the userspace
tools that are kept in this repository.
For this to work, make_version must be able to generate a version for a tag
prefix not just the last tag in the repo.
The new usage of make_version is to specify a tag prefix when calling it so
that it knows what tag to look for. This option is ignored if not in a git
repository and the current behaviour of relying on a .version file or
$SKIBOOT_VERSION variable remains.
Signed-off-by: Cyril Bur <cyril.bur@au1.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Otherwise we build with -DHAVE_BIG_ENDIAN on ppc64le, which is *NOT*
what we want for HOSTCC on ppc64le.
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
We seem to need this to get the gcc generated ctors not discarded
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
If you dump the (relocated) skiboot memory (2MB, from 0x30000000)
and point extract-gcov at it, you'll get a bunch of gcda files
extracted in pwd that you can then feed to gcov to get real usage
data.
This is a different approach than, say, the linux kernel, which when
built with gcov provides a debugfs interface to the gcda files that
you can just copy with normal userspace utilities.
For skiboot, I have no desire to add a VFS style interface and since
if you're dealing with GCOV+skiboot you should probably pretty well
know what you're doing, parsing the gcov data structures in userspace
from a dump of memory is actually not too bad.
You can grab this memory from linux, FSP, mambo or any debug mechanism that
lets you dump out a section of physical memory.
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
The gcov constructors call __gcov_init() for each gcov covered file,
which we then need to turn into a linked list of all gcov files so
that we can traverse them later to pull out gcov profiling data.
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Enable build options for building skiboot with GCOV profiling,
including a skeleton -lgcov replacement in the form of core/gcov-profiling.c
We don't actually have to do anything as part of the gcov routines,
gcov auto generates everything we need.
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
As this is done on the Linux kernel, one can now run sparse using
C=1 on the command line. The variable CF can be used to tune the
sparse options.
Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Add linking with libgcc so that we can access functions like __builtin_*.
Final size of skiboot remains unchanged with this patch.
Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
The -m options are for the compiler, not the preprocessor. Since we may
execute CC without CPPFLAGS, move these options to CFLAGS & AFLAGS.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
With some fun Makefile rules, we can pick up all CCAN unit tests.
We exclude the unit test source files from the lcov report itself.
Add skeleton ccan config.h and tap.h that are enough for us to build
and run the test suite. Currently, the minimalist versions should
be fine (and we don't need CCAN configurator).
Also includes -Werror fixes for ccan tests.
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Instead of having individual rules to generate .d, add -MMD to
HOSTCC parameters, and just include the generated .d files.
This fixes a few weird dependency issues.
Also, make the mambo hello_kernel test depend on skiboot.lid
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
We now warn on any function or stack frame that's going to use
more than 1024 bytes of stack.
The current biggest user with 912 bytes is p7ioc_init_ci_routing()
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
When using a build directory different from the source tree, .C files
and make_version.sh are not found :
make: *** No rule to make target `libpore/p8_pore_table_gen_api_fixed.o', needed by `libpore/built-in.o'.
make: *** No rule to make target `make_version.sh', needed by `version.c'.
Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
|
|
whoops
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|
|
We grab a version from git tags (or SKIBOOT_VERSION environment variable),
optionally tack on EXTRA_VERSION (if from git) as well as add things to the
git version number if we're ahead of the most recent tag or the tree is dirty.
Also fix-up makefiles so that we don't have to rebuild version.c every time
you run make.
fsp attn area needed updating as we can have >40 character version strings.
We also export the version string via device tree rather than just the gitid.
For buildroot builds, setting SKIBOOT_VERSION environment variable to the
tag you grab will do the correct thing.
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
|