aboutsummaryrefslogtreecommitdiff
path: root/skiboot.lds.S
AgeCommit message (Collapse)AuthorFilesLines
2019-05-21With new GCC comes larger GCOV binariesStewart Smith1-3/+3
So we need to change our heap size to make more room for data/bss without having to change where the console is or have more fun moving things about. Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
2019-05-21Intentionally discard fini_array sectionsStewart Smith1-0/+1
Produced in a SKIBOOT_GCOV=1 build, and never called by skiboot. Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
2019-05-20core/trace: Change buffer alignment from 4K to 64KJordan Niethe1-2/+2
We want to be able to mmap the trace buffers to be used by the dump_trace tool. This means that the trace bufferes must be page aligned. Currently they are aligned to 4K. Most power systems have a 64K page size. On systems with a 4K page size, 64K aligned will still be page aligned. Change the allocation of the trace buffers to be 64K aligned. The trace_info struct that contains the trace buffer is actually what is allocated aligned memory. This means the trace buffer itself is not actually aligned and this is the address that is currently exposed through sysfs. To get around this change the address that is exposed to sysfs to be the trace_info struct. This means the lock in trace_info is now visible too. Signed-off-by: Jordan Niethe <jniethe5@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
2019-04-17build/lds: place remaining sections according to defaultsNicholas Piggin1-4/+11
Place remaining orphan linker sections according to default script as described by `ld --verbose`. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
2019-04-17build/lds: place debug sections according to defaultsNicholas Piggin1-0/+45
Place debug orphan linker sections according to default script as described by `ld --verbose`. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
2019-04-17build: -fno-asynchronous-unwind-tablesNicholas Piggin1-0/+1
skiboot does not use unwind tables, this option saves about 100kB, mostly from .text. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
2018-11-08gcov: link in ctors* as newer GCC doesn't group them allStewart Smith1-1/+1
It seems that newer toolchains get us multiple ctors sections to link in rather than just one. If we discard them (as we were doing), then we don't have a working gcov build (and we get the "doesn't look sane" warning on boot). So, include ctors* and all is well. Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
2018-09-20skiboot.lds.S: move read-write data after the end of symbol mapNicholas Piggin1-17/+24
This also tidies up linker script symbol declarations and adds _rodata_mem symbol for the next change to use. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
2018-03-08Keep constructors with prioritiesStewart Smith1-1/+2
Fixes GCOV builds with gcc7, which uses this. Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
2017-08-24bump skiboot size from 3 to 4MB, reduce heap by 1MBStewart Smith1-2/+2
GCOV enabled builds with modern GCC are getting bigger. At some point we're going to have to go do something sensible, but even on our larger systems we're not *that* close to running out of heap that this would be a problem. HEAP is now 12MB rather than 13MB. Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
2017-02-06Dead code and data eliminationNicholas Piggin1-3/+2
Add an experimental option to do basic dead code and data elimintation with -ffunction-sections/-fdata-sections/--gc-sections. This saves about 80kB of text/data. Also remove the use of of -ffunction-sections by default. This predates git history, but I don't think there is a good reason to use it without --gc-sections. The GCC manual says: Only use these options when there are significant benefits from doing so. When you specify these options, the assembler and linker create larger object and executable files and are also slower. You cannot use gprof on all systems if you specify this option, and you may have problems with debugging if you specify both this option and -g. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
2016-04-01hdata: Initialize SPIRA-H structureVasant Hegde1-0/+5
Previous patch reduced reserved space in spira structure. Now its safe to reduce the memory for spira section from 2K to 1K. Create separate memory section with 1K size for SPIRA-H. Also initialize SPIRA-H. FSP makes use of this information to pass various boot time data (like SPIRA-S, etc) to host. Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
2015-05-15Align TOC to 256 bytesBenjamin Herrenschmidt1-1/+1
Anton sent a similar patch to Linus, here is his comment: << Recent toolchains force the TOC to be 256 byte aligned. We need to enforce this alignment in our linker script, otherwise pointers to our TOC variables (...) could be incorrect. >> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
2015-05-15Run gcc constructorsStewart Smith1-0/+8
As part of setting up GCOV data structures correctly, GCC/GCOV generates a bunch of constructor routines that the C runtime is expected to run really early on. skiboot was not running GCC generated constructors. Luckily, it's really easy to do so. This patch will run GCC constructors very early on during boot (if there are any) Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
2015-05-15Make skiboot able to be 2MB rather than 1MBStewart Smith1-2/+2
When built with gcov, skiboot is >1MB (closer to 1.5MB) and there were a few assumptions about skiboot being <1MB. The biggest one was that when code got larger, we'd have the sbss section start in the middle of code, so that when we were going to relocate ourselves, we'd only get the first 1MB of skiboot relocated, which excluded the _DYNAMIC section, meaning that relocate() would not find the right sections. We also needed to not start writing over random parts of skiboot. Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
2014-11-18Add symbolic backtraces and expose skiboot map to LinuxBenjamin Herrenschmidt1-1/+11
We use a double link technique, doing a first pass with a .o containing a dummy symbol map, then re-linking with a new .o Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2014-11-18Add functions to backtrace into a non-text bufferBenjamin Herrenschmidt1-1/+3
Separate text translation from capture of the backtrace Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2014-08-01ATTN: Set up attention area to handle attentionAruna Balakrishnaiah1-0/+5
At present CPU control area ntuple in SPIRA structure is NULL. ATTN component in Service Processor side checks for this field and if its empty, it logs hardcoded SRC (0xBB821410) and generates SYSDUMP. So we have 1 SRC for all failure (assert call) from OPAL side. This makes difficult to debug the issue. Service processor provides attention area interface (FIPS PHyp Attentions spec), so that we can pass SRC and user data (error message) to service processor. This will helps us identify different failures in OPAL. This patch enables attention area and provides interface (update_sp_attn_area()) to add src and user data (error message) through assert macro. Attention SRC format: 1st byte - Opal src type 2-4 bytes - Holds the address of the assert function call Signed-off-by: Aruna Balakrishnaiah <aruna@linux.vnet.ibm.com> Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2014-07-02Initial commit of Open Source releaseBenjamin Herrenschmidt1-0/+143
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>