#14166 closed bug (fixed)

Building haiku_loader.efi on haiku x86_64 fails in video.o

Reported by: taos Owned by: nobody
Priority: normal Milestone: Unscheduled
Component: - General Version: R1/Development
Keywords: Cc:
Blocked By: Blocking:
Has a Patch: no Platform: All

Description

I'm using haiku x86_64 hrev51977 in VirtualBox.

Building haiku_loader.efi with HAIKU_BOOT_PLATFORM=efi jam -q haiku_loader.efi fails in objects/haiku/x86_64/release/system/boot/platform/efi/efi/video.o

Terminal output is attached.

Attachments (1)

Terminal output.txt (48.6 KB ) - added by taos 17 months ago.
Terminal output during build of haiku_loader.efi

Download all attachments as: .zip

Change History (4)

by taos, 17 months ago

Attachment: Terminal output.txt added

Terminal output during build of haiku_loader.efi

comment:1 by korli, 17 months ago

Try to replace with:

    uint32 diff = 2 * abs((int32)mode->width - width) + abs((int32)mode->height - height)
			+ abs((int32)mode->bits_per_pixel - depth);

in reply to:  1 comment:2 by taos, 17 months ago

Replying to korli:

Try to replace with:

    uint32 diff = 2 * abs((int32)mode->width - width) + abs((int32)mode->height - height)
			+ abs((int32)mode->bits_per_pixel - depth);

Doesn't work:

C++ /Hub/haiku/generated/objects/haiku/x86_64/release/system/boot/platform/efi/efi/video.o 
src/system/boot/platform/efi/video.cpp: In function 'video_mode* closest_video_mode(uint32, uint32, uint32)':
src/system/boot/platform/efi/video.cpp:97:51: error: call of overloaded 'abs(uint32)' is ambiguous
   uint32 diff = 2 * abs((int32)mode->width - width) + abs((int32)mode->height - height)

With the following modification (no idea if this makes sense) the build proceeds a little further:

    uint32 diff = 2 * abs(int32(mode->width - width)) + abs(int32(mode->height - height))
			+ abs(int32(mode->bits_per_pixel - depth));

And then stops with:

C++ /Hub/haiku/generated/objects/haiku/x86_64/release/system/boot/arch/x86/efi/arch_string.o 
/Hub/haiku/src/system/libroot/posix/string/arch/x86_64/arch_string.cpp: In instantiation of 'constexpr {anonymous}::GenerateTable<Generator, 0, Index ...>::GenerateTable() [with Generator = {anonymous}::SSEGenerator; unsigned int ...Index = {0, 1, 2, 3}]':
/Hub/haiku/src/system/libroot/posix/string/arch/x86_64/arch_string.cpp:19:8:   required from here
/Hub/haiku/src/system/libroot/posix/string/arch/x86_64/arch_string.cpp:29:2: error: ignoring attributes on template argument 'void (* const)(__m128i*, const __m128i*) {aka void (* const)(__vector(2) long long int*, const __vector(2) long long int*)}' [-Werror=ignored-attributes]
  }
  ^
/Hub/haiku/src/system/libroot/posix/string/arch/x86_64/arch_string.cpp: In constructor 'constexpr {anonymous}::GenerateTable<{anonymous}::SSEGenerator, 2, 2, 3>::GenerateTable()':
/Hub/haiku/src/system/libroot/posix/string/arch/x86_64/arch_string.cpp:19:8: note: synthesized method 'constexpr {anonymous}::GenerateTable<{anonymous}::SSEGenerator, 1, 1, 2, 3>::GenerateTable()' first required here 
 struct GenerateTable : GenerateTable<Generator, N - 1,  N - 1, Index...> {
        ^~~~~~~~~~~~~
/Hub/haiku/src/system/libroot/posix/string/arch/x86_64/arch_string.cpp: In constructor 'constexpr {anonymous}::GenerateTable<{anonymous}::SSEGenerator, 3, 3>::GenerateTable()':
/Hub/haiku/src/system/libroot/posix/string/arch/x86_64/arch_string.cpp:19:8: note: synthesized method 'constexpr {anonymous}::GenerateTable<{anonymous}::SSEGenerator, 2, 2, 3>::GenerateTable()' first required here 
/Hub/haiku/src/system/libroot/posix/string/arch/x86_64/arch_string.cpp: In constructor 'constexpr {anonymous}::GenerateTable<{anonymous}::SSEGenerator, 4>::GenerateTable()':
/Hub/haiku/src/system/libroot/posix/string/arch/x86_64/arch_string.cpp:19:8: note: synthesized method 'constexpr {anonymous}::GenerateTable<{anonymous}::SSEGenerator, 3, 3>::GenerateTable()' first required here 
/Hub/haiku/src/system/libroot/posix/string/arch/x86_64/arch_string.cpp: At global scope:
/Hub/haiku/src/system/libroot/posix/string/arch/x86_64/arch_string.cpp:98:49: note: synthesized method 'constexpr {anonymous}::GenerateTable<{anonymous}::SSEGenerator, 4>::GenerateTable()' first required here 
 constexpr static GenerateTable<SSEGenerator, 4> table_sse;
                                                 ^~~~~~~~~
cc1plus: all warnings being treated as errors

comment:3 by korli, 17 months ago

Resolution: fixed
Status: newclosed

Fix build in hrev51986

Note: See TracTickets for help on using tickets.