[coreboot] Some errors by compiling romstage (I am a newbie)

Aaron Durbin adurbin at google.com
Fri Mar 3 15:54:32 CET 2017


On Fri, Mar 3, 2017 at 8:37 AM, Maxim Gusev <mail at maximgusev.com> wrote:
> It doesn't work any case.
> As I understood these options remove the unreferenced symbols, but I have
> referenced symbols (the error is undefined reference).
> The definition of the used functions is in the file that is missing at this
> stage but all works on other archs.
>

The symbol might be referenced in one function in that compilation
unit, but if the symbol of the function using the undefined symbols is
not referenced from any of the root symbols then it should be removed.
The fact that it isn't suggests -gc-sections isn't working *or*
-f(data|function)-sections isn't working. As I requested previously,
readelf -e from one of the romstage .o files would confirm the latter.
As it stands now I can't speculate as to what is happening because the
code you are working on isn't published so I can't do anything beyond
request the information I've already requested.

>
>
> -------- Original Message --------
> Subject: Re: [coreboot] Some errors by compiling romstage (I am a newbie)
> Local Time: 3 Марта 2017 г. 4:54 дня
> UTC Time: 3 Марта 2017 г. 13:54
> From: adurbin at google.com
> To: Maxim Gusev <mail at maximgusev.com>, Coreboot <coreboot at coreboot.org>
>
> On Fri, Mar 3, 2017 at 6:41 AM, Maxim Gusev <mail at maximgusev.com> wrote:
>> These options are supported.
>> But the option -fno-pie is not supported (Don’t produce a position
>> independent executable).
>> Is it the reason of the fault?
>
>
> I wouldn't think so. If you remove that option does it magically work?
> From the errors you showed -gc-sections along with -fdata-sections and
> -ffunction-sections would have removed the unreferenced symbols and
> not cause a link error. To prove that -f(data|function)-sections are
> working can you provide the readelf -e output from an intermediate .o
> file you compiled for romstage?
>
>>
>>
>>
>> -------- Original Message --------
>> Subject: Re: [coreboot] Some errors by compiling romstage (I am a newbie)
>> Local Time: 2 Марта 2017 г. 6:01 вечера
>> UTC Time: 2 Марта 2017 г. 15:01
>> From: adurbin at google.com
>> To: Maxim Gusev <mail at maximgusev.com>
>> coreboot at coreboot.org <coreboot at coreboot.org>
>>
>> On Thu, Mar 2, 2017 at 8:33 AM, Maxim Gusev <mail at maximgusev.com> wrote:
>>> Hello, Aaron!
>>>
>>> I am compiling sourses of my arch e2k.
>>> I have compiled bootblock with my sources. There aren't my sources in
>>> other
>>> stages. I have create arch directory and mainboard directory where the
>>> sources are located.
>>>
>>>
>>>
>>> Log:
>>>
>>> /home/maxim/coreboot/util/crossgcc/xgcc/bin/linux-ld: warning: cannot
>>> find
>>> entry symbol start; defaulting to 0000000100187000
>>> build/romstage/lib/imd_cbmem.o: In function `cbmem_add_bootmem':
>>> /home/maxim/coreboot/src/lib/imd_cbmem.c:287: undefined reference to
>>> `bootmem_add_range'
>>> build/romstage/lib/imd_cbmem.o: In function
>>> `cbmem_add_records_to_cbtable':
>>> /home/maxim/coreboot/src/lib/imd_cbmem.c:314: undefined reference to
>>> `lb_new_record'
>>> make: *** [build/cbfs/fallback/romstage.debug] Error 1
>>>
>>
>> Does your arch's compiler support -ffuncation-sections and
>> -fdata-sections? As well as your linker supporting --gc-sections ? All
>> the architectures we support have those flags. See Makefile.inc which
>> provides those in CFLAGS_common and LDFLAGS_common. That support
>> allows us to not sprinkle #ifdef's all around in the code when the
>> same source file is compiled for different stages.
>>
>>>
>>>
>>> -------- Original Message --------
>>> Subject: Re: [coreboot] Some errors by compiling romstage (I am a newbie)
>>> Local Time: 2 Марта 2017 г. 5:22 вечера
>>> UTC Time: 2 Марта 2017 г. 14:22
>>> From: adurbin at google.com
>>> To: Maxim Gusev <mail at maximgusev.com>
>>> coreboot at coreboot.org <coreboot at coreboot.org>
>>>
>>> On Thu, Mar 2, 2017 at 7:24 AM, Maxim Gusev via coreboot
>>> <coreboot at coreboot.org> wrote:
>>>> Hi everbody!
>>>>
>>>> I have a question. Very hope for your help.
>>>>
>>>> When I am compiling the romstage there are 2 errors by the linker:
>>>> Undefined refference to 'bootmem_add_range'
>>>> Undefined refference to 'lb_new_record' in the imd_cbmem.c file (it is
>>>> included in src/lib/Makefile.inc romstage).
>>>>
>>>> The definitions of these functions are in lib/bootmem.c and
>>>> lib/coreboot_table.c accordingly.
>>>> But I can't see the inclusion of these files in romstage in
>>>> src/Makefile.inc
>>>> (only in ramstage):
>>>> ramstage-y += bootmem.c
>>>> ramstage-y += coreboot_table.c
>>>>
>>>> How to solve this problem?
>>>> The inclusion of these files produces a number of other errors, but
>>>> nowhere
>>>> in the code no one does it? Why only I am having this error.
>>>
>>>
>>> What board are you building? Are you working on local patches to your
>>> setup only? What does the build log indicate?
>>>
>>>>
>>>> In General, I don't even need these stages (romstage and ramstage) - I
>>>> want
>>>> to check the performance on real hardware the work of the bootblock, but
>>>> the
>>>> toolchain requires me to compile other stages. And the error occurs even
>>>> not
>>>> in my code, but my ignorance.
>>>>
>>>> Thanks a lot!
>>>> Regards, Maxim
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> coreboot mailing list: coreboot at coreboot.org
>>>> https://www.coreboot.org/mailman/listinfo/coreboot
>>>
>>>
>>
>>
>
>



More information about the coreboot mailing list