public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* Re: On integrating LoongArch EDK2 firmware into QEMU build process
       [not found]     ` <317e3008-e2bd-8af6-2cf5-dad49d98cb8d@loongson.cn>
@ 2023-04-03  8:51       ` maobibo
  2023-04-03 10:13         ` [edk2-devel] " Chao Li
  0 siblings, 1 reply; 6+ messages in thread
From: maobibo @ 2023-04-03  8:51 UTC (permalink / raw)
  To: Chao Li
  Cc: WANG Xuerui, qemu-devel, Song Gao, 杨小娟,
	devel, Gerd Hoffmann

Cc to Chao Li who is maintainer of edk2 about LoongArch support.

Hi Chao, 

Fedora38 is used to build edk2 binary in qemu CI, cross gcc-12 is
integrated on Fedora38. There is one issue when gcc-12 is used to
build edk2 loongarch like this:
> ... but when trying to use them to compile the loongarch firmware gcc
> throws errors:
>
> loongarch64-linux-gnu-gcc: error: unrecognized command-line option ‘-mno-explicit-reloc

what is your option about this issue?

Regards
Bibo, Mao

在 2023/4/1 13:11, maobibo 写道:
> 
> 
> On 2023/3/31 20:12, Gerd Hoffmann wrote:
>> On Fri, Mar 31, 2023 at 08:54:16AM +0800, maobibo wrote:
>>> Xuerui,
>>>
>>> Thanks for your mail, it is a good suggestion. Now we are planing to
>>> move LoongArch uefi bios from edk2-platform to edk2 repo, so that uefi
>>> bios supporting LoongArch can be auto compiled and uploaded to qemu
>>> repo. Only that process is somwhat slow since lacking of hands,
>>> however we are doing this.
>>
>> Good, so I think it makes sense for qemu to just wait for that to
>> happen.
>>
>> Related question:  What are the requirements to build the firmware?
>> Fedora 38 ships cross compiler packages ...
>>
>>    binutils-loongarch64-linux-gnu-2.39-3.fc38.x86_64
>>    gcc-loongarch64-linux-gnu-12.2.1-5.fc38.x86_64
>>
>> ... but when trying to use them to compile the loongarch firmware gcc
>> throws errors:
>>
>> loongarch64-linux-gnu-gcc: error: unrecognized command-line option ‘-mno-explicit-relocs’
>>
>> I suspect gcc-12 is just too old?
> There is a little different about relocation between gcc-12 and gcc-13 on LoongArch, gcc-13 is required for edk2 compiler now.
> 
> However I think it is actually is one issue if gcc-12 can not be used and gcc-12 is popular latest compiler for all architectures. We will solve this problem.
> 
> Regards
> Bibo, Mao
> 
> 
>>
>> take care,
>>    Gerd
>>
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [edk2-devel] On integrating LoongArch EDK2 firmware into QEMU build process
  2023-04-03  8:51       ` On integrating LoongArch EDK2 firmware into QEMU build process maobibo
@ 2023-04-03 10:13         ` Chao Li
  2023-04-03 10:29           ` Michael Brown
  2023-04-03 10:58           ` Gerd Hoffmann
  0 siblings, 2 replies; 6+ messages in thread
From: Chao Li @ 2023-04-03 10:13 UTC (permalink / raw)
  To: devel, maobibo
  Cc: WANG Xuerui, qemu-devel, Song Gao, 杨小娟,
	Gerd Hoffmann

[-- Attachment #1: Type: text/plain, Size: 3141 bytes --]

Hi Bibo,

Thanks for Cc to me.


Hi Gerd,

This problem is because the gcc-12 does not yet to support the option 
'mno-explicit-reloc', this option is used to open the new reloaction 
type for LoongArch, this new feature is very important for LoongArch, 
because it can reduce the binary size and improve code execution 
efficiency, so we turn it on when submitting the code to the EDK2 repo.

gcc-13 will support this new feature, so we expect this issue to be 
resolved when using gcc-13, which may be released at this month.

If Fedora38 does not plan to use gcc-13 now, I suggest that CI can 
download a LoongArch cross gcc-13 when creating a docker image, just 
like EDK2 CI process. You can refer following link for more information: 
https://github.com/tianocore/containers/blob/main/Fedora-37/Dockerfile . 
EDK2 CI uses Fedora35 and Fedora37 docker images for LoongArch,  they 
will download a LoongArch cross gcc-13 when the CI targets is LoongArch.

We are really sorry about that, I think this solution will make more 
work for you, but I think it is the best way for now, and I believe it 
will be solved when Fedora uses gcc-13 in the future.


Thanks,
Chao
在 2023/4/3 16:51, maobibo 写道:
> Cc to Chao Li who is maintainer of edk2 about LoongArch support.
>
> Hi Chao,
>
> Fedora38 is used to build edk2 binary in qemu CI, cross gcc-12 is
> integrated on Fedora38. There is one issue when gcc-12 is used to
> build edk2 loongarch like this:
>> ... but when trying to use them to compile the loongarch firmware gcc
>> throws errors:
>>
>> loongarch64-linux-gnu-gcc: error: unrecognized command-line option ‘-mno-explicit-reloc
> what is your option about this issue?
>
> Regards
> Bibo, Mao
>
> 在 2023/4/1 13:11, maobibo 写道:
>>
>> On 2023/3/31 20:12, Gerd Hoffmann wrote:
>>> On Fri, Mar 31, 2023 at 08:54:16AM +0800, maobibo wrote:
>>>> Xuerui,
>>>>
>>>> Thanks for your mail, it is a good suggestion. Now we are planing to
>>>> move LoongArch uefi bios from edk2-platform to edk2 repo, so that uefi
>>>> bios supporting LoongArch can be auto compiled and uploaded to qemu
>>>> repo. Only that process is somwhat slow since lacking of hands,
>>>> however we are doing this.
>>> Good, so I think it makes sense for qemu to just wait for that to
>>> happen.
>>>
>>> Related question:  What are the requirements to build the firmware?
>>> Fedora 38 ships cross compiler packages ...
>>>
>>>     binutils-loongarch64-linux-gnu-2.39-3.fc38.x86_64
>>>     gcc-loongarch64-linux-gnu-12.2.1-5.fc38.x86_64
>>>
>>> ... but when trying to use them to compile the loongarch firmware gcc
>>> throws errors:
>>>
>>> loongarch64-linux-gnu-gcc: error: unrecognized command-line option ‘-mno-explicit-relocs’
>>>
>>> I suspect gcc-12 is just too old?
>> There is a little different about relocation between gcc-12 and gcc-13 on LoongArch, gcc-13 is required for edk2 compiler now.
>>
>> However I think it is actually is one issue if gcc-12 can not be used and gcc-12 is popular latest compiler for all architectures. We will solve this problem.
>>
>> Regards
>> Bibo, Mao
>>
>>
>>> take care,
>>>     Gerd
>>>
>
>
> 
>

[-- Attachment #2: Type: text/html, Size: 4867 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [edk2-devel] On integrating LoongArch EDK2 firmware into QEMU build process
  2023-04-03 10:13         ` [edk2-devel] " Chao Li
@ 2023-04-03 10:29           ` Michael Brown
  2023-04-03 11:04             ` Gerd Hoffmann
  2023-04-03 10:58           ` Gerd Hoffmann
  1 sibling, 1 reply; 6+ messages in thread
From: Michael Brown @ 2023-04-03 10:29 UTC (permalink / raw)
  To: devel, lichao, maobibo
  Cc: WANG Xuerui, qemu-devel, Song Gao, 杨小娟,
	Gerd Hoffmann

On 03/04/2023 11:13, Chao Li wrote:
> This problem is because the gcc-12 does not yet to support the option 
> 'mno-explicit-reloc', this option is used to open the new reloaction 
> type for LoongArch, this new feature is very important for LoongArch, 
> because it can reduce the binary size and improve code execution 
> efficiency, so we turn it on when submitting the code to the EDK2 repo.

Is it possible to produce a _functional_ LoongArch64 EDK2 binary without 
this option, even if the resulting binary is less efficient?

(I'm the person who updated Fedora's binutils and cross-gcc packages to 
ensure that LoongArch64 was supported in Fedora 38, and this 
-mno-explicit-relocs issue is also currently blocking me from merging 
LoongArch64 support into iPXE.)

Thanks,

Michael


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [edk2-devel] On integrating LoongArch EDK2 firmware into QEMU build process
  2023-04-03 10:13         ` [edk2-devel] " Chao Li
  2023-04-03 10:29           ` Michael Brown
@ 2023-04-03 10:58           ` Gerd Hoffmann
  1 sibling, 0 replies; 6+ messages in thread
From: Gerd Hoffmann @ 2023-04-03 10:58 UTC (permalink / raw)
  To: devel, lichao
  Cc: maobibo, WANG Xuerui, qemu-devel, Song Gao,
	杨小娟

On Mon, Apr 03, 2023 at 06:13:41PM +0800, Chao Li wrote:
> Hi Bibo,
> 
> gcc-13 will support this new feature, so we expect this issue to be resolved
> when using gcc-13, which may be released at this month.
> 
> If Fedora38 does not plan to use gcc-13 now, I suggest that CI can download
> a LoongArch cross gcc-13 when creating a docker image, just like EDK2 CI
> process. You can refer following link for more information:

The non-cross gcc already is at 13.  Fedora builds the distro with
pre-release gcc so gcc gets some serious real-world testing before
release.

The cross compilers lagging behind a bit, not sure whenever there is
some actual problem or whenever maintainers are just waiting for the
final gcc-13 release.

> https://github.com/tianocore/containers/blob/main/Fedora-37/Dockerfile .
> EDK2 CI uses Fedora35 and Fedora37 docker images for LoongArch,  they will
> download a LoongArch cross gcc-13 when the CI targets is LoongArch.

While that works as temporary stopgap for edk2 CI it is a non-starter
for fedora distro builds.  Any builds must be done using compilers
shipped by fedora.  So, fedora shipping edk2-loongarch (or
ipxe-loongarch) packages is blocked by this.

> We are really sorry about that, I think this solution will make more work
> for you, but I think it is the best way for now, and I believe it will be
> solved when Fedora uses gcc-13 in the future.

I'll go just wait for gcc-13 cross compilers land in fedora then.

take care,
  Gerd


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [edk2-devel] On integrating LoongArch EDK2 firmware into QEMU build process
  2023-04-03 10:29           ` Michael Brown
@ 2023-04-03 11:04             ` Gerd Hoffmann
  2023-04-04  2:24               ` Chao Li
  0 siblings, 1 reply; 6+ messages in thread
From: Gerd Hoffmann @ 2023-04-03 11:04 UTC (permalink / raw)
  To: devel, mcb30
  Cc: lichao, maobibo, WANG Xuerui, qemu-devel, Song Gao,
	杨小娟

On Mon, Apr 03, 2023 at 10:29:52AM +0000, Michael Brown wrote:
> On 03/04/2023 11:13, Chao Li wrote:
> > This problem is because the gcc-12 does not yet to support the option
> > 'mno-explicit-reloc', this option is used to open the new reloaction
> > type for LoongArch, this new feature is very important for LoongArch,
> > because it can reduce the binary size and improve code execution
> > efficiency, so we turn it on when submitting the code to the EDK2 repo.
> 
> Is it possible to produce a _functional_ LoongArch64 EDK2 binary without
> this option, even if the resulting binary is less efficient?

MdePkg/Include/IndustryStandard/PeImage.h lists a single loongarch
relocation type only, which I expect being the new type.  So I suspect
the answer is "no" because the edk2 pe loader isn't able to handle the
old relocation type(s).

take care,
  Gerd


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [edk2-devel] On integrating LoongArch EDK2 firmware into QEMU build process
  2023-04-03 11:04             ` Gerd Hoffmann
@ 2023-04-04  2:24               ` Chao Li
  0 siblings, 0 replies; 6+ messages in thread
From: Chao Li @ 2023-04-04  2:24 UTC (permalink / raw)
  To: devel, kraxel, mcb30
  Cc: maobibo, WANG Xuerui, qemu-devel, Song Gao,
	杨小娟

[-- Attachment #1: Type: text/plain, Size: 2540 bytes --]

在 2023/4/3 19:04, Gerd Hoffmann 写道:

> On Mon, Apr 03, 2023 at 10:29:52AM +0000, Michael Brown wrote:
>> On 03/04/2023 11:13, Chao Li wrote:
>>> This problem is because the gcc-12 does not yet to support the option
>>> 'mno-explicit-reloc', this option is used to open the new reloaction
>>> type for LoongArch, this new feature is very important for LoongArch,
>>> because it can reduce the binary size and improve code execution
>>> efficiency, so we turn it on when submitting the code to the EDK2 repo.
>> Is it possible to produce a _functional_ LoongArch64 EDK2 binary without
>> this option, even if the resulting binary is less efficient?
> MdePkg/Include/IndustryStandard/PeImage.h lists a single loongarch
> relocation type only, which I expect being the new type.  So I suspect
> the answer is "no" because the edk2 pe loader isn't able to handle the
> old relocation type(s).

Yes, the answer is "no", but the opposite is ture, the 
MdePkg/Include/IndustryStandard/PeImage.h LoongArch relocation type is 
older, this type appears in this list for compatiblility with binaries 
using the old reloaction type. If you use this type, you have to turn on 
the option '-mla-global-with-abs' in gcc,all global symbols will be 
created as "mark la" type, PE loader will use this rule to handle them. 
This option is mutually exclusive with 'mno-explicit-reloc',  new 
reloaction type(s) doesn't require special type(s) to be expressed in 
PeImage.h, PE loader doesn't need to do anything about relocation, all 
of reloaction process is done in BaseTools/Source/C/GenFw/Elf64Convert.c.


Thanks,
Chao
在 2023/4/3 19:04, Gerd Hoffmann 写道:
> On Mon, Apr 03, 2023 at 10:29:52AM +0000, Michael Brown wrote:
>> On 03/04/2023 11:13, Chao Li wrote:
>>> This problem is because the gcc-12 does not yet to support the option
>>> 'mno-explicit-reloc', this option is used to open the new reloaction
>>> type for LoongArch, this new feature is very important for LoongArch,
>>> because it can reduce the binary size and improve code execution
>>> efficiency, so we turn it on when submitting the code to the EDK2 repo.
>> Is it possible to produce a _functional_ LoongArch64 EDK2 binary without
>> this option, even if the resulting binary is less efficient?
> MdePkg/Include/IndustryStandard/PeImage.h lists a single loongarch
> relocation type only, which I expect being the new type.  So I suspect
> the answer is "no" because the edk2 pe loader isn't able to handle the
> old relocation type(s).
>
> take care,
>    Gerd
>
>
>
> 
>

[-- Attachment #2: Type: text/html, Size: 4046 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-04-04  2:24 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1f1d3d9f-c3df-4f29-df66-886410994cc3@xen0n.name>
     [not found] ` <67517424-0f32-09f8-6446-53f71ebd59b5@loongson.cn>
     [not found]   ` <x5vbhjcyc3jl5u3qdjg2dq2znwhdq7ordmbjm6s2hftwyusqp2@r6smasorrjor>
     [not found]     ` <317e3008-e2bd-8af6-2cf5-dad49d98cb8d@loongson.cn>
2023-04-03  8:51       ` On integrating LoongArch EDK2 firmware into QEMU build process maobibo
2023-04-03 10:13         ` [edk2-devel] " Chao Li
2023-04-03 10:29           ` Michael Brown
2023-04-03 11:04             ` Gerd Hoffmann
2023-04-04  2:24               ` Chao Li
2023-04-03 10:58           ` Gerd Hoffmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox