[Mesa-dev] [PATCH] android: mesa: revert "Enable asm unconditionally"

Tapani Pälli tapani.palli at intel.com
Thu Aug 15 05:27:27 UTC 2019


On 8/13/19 9:55 PM, Mauro Rossi wrote:
> Hi,
> 
> On Tue, Aug 13, 2019 at 3:51 PM Tapani Pälli <tapani.palli at intel.com 
> <mailto:tapani.palli at intel.com>> wrote:
> 
> 
>     On 8/13/19 3:32 PM, Mauro Rossi wrote:
>      > Hi,
>      >
>      > On Tue, Aug 13, 2019 at 2:03 PM Tapani Pälli
>     <tapani.palli at intel.com <mailto:tapani.palli at intel.com>
>      > <mailto:tapani.palli at intel.com <mailto:tapani.palli at intel.com>>>
>     wrote:
>      >
>      >     Hi;
>      >
>      >     On 8/13/19 2:43 PM, Mauro Rossi wrote:
>      >      > Hi Tapani,
>      >      >
>      >      > On Sat, Jul 27, 2019 at 2:56 PM Mauro Rossi
>      >     <issor.oruam at gmail.com <mailto:issor.oruam at gmail.com>
>     <mailto:issor.oruam at gmail.com <mailto:issor.oruam at gmail.com>>
>      >      > <mailto:issor.oruam at gmail.com
>     <mailto:issor.oruam at gmail.com> <mailto:issor.oruam at gmail.com
>     <mailto:issor.oruam at gmail.com>>>> wrote:
>      >      >
>      >      >     On Sat, Jul 27, 2019 at 2:56 PM Mauro Rossi
>      >     <issor.oruam at gmail.com <mailto:issor.oruam at gmail.com>
>     <mailto:issor.oruam at gmail.com <mailto:issor.oruam at gmail.com>>
>      >      >     <mailto:issor.oruam at gmail.com
>     <mailto:issor.oruam at gmail.com>
>      >     <mailto:issor.oruam at gmail.com
>     <mailto:issor.oruam at gmail.com>>>> wrote:
>      >      >      >
>      >      >      > On Thu, Jul 18, 2019 at 1:07 PM Chih-Wei Huang
>      >      >     <cwhuang at android-x86.org
>     <mailto:cwhuang at android-x86.org> <mailto:cwhuang at android-x86.org
>     <mailto:cwhuang at android-x86.org>>
>      >     <mailto:cwhuang at android-x86.org
>     <mailto:cwhuang at android-x86.org> <mailto:cwhuang at android-x86.org
>     <mailto:cwhuang at android-x86.org>>>>
>      >     wrote:
>      >      >      > >
>      >      >      > > Mauro Rossi <issor.oruam at gmail.com
>     <mailto:issor.oruam at gmail.com>
>      >     <mailto:issor.oruam at gmail.com <mailto:issor.oruam at gmail.com>>
>      >      >     <mailto:issor.oruam at gmail.com
>     <mailto:issor.oruam at gmail.com>
>      >     <mailto:issor.oruam at gmail.com
>     <mailto:issor.oruam at gmail.com>>>> 於 2019年7月14日 週日 下午5:17寫道:
>      >      >      > > >
>      >      >      > > > This patch partially reverts 20294dc ("mesa:
>     Enable asm
>      >      >     unconditionally, ...")
>      >      >      > > >
>      >      >      > > > Android makefile build logic needs to disable
>     assembler
>      >      >     optimization
>      >      >      > > > in 32bit builds to avoid text relocations for
>      >     libglapi.so shared
>      >      >      > > >
>      >      >      > > > Fixes the following build error with Android
>     x86 32bit
>      >     target:
>      >      >      > > >
>      >      >      > > > [  0% 4/477] target SharedLib: libglapi
>      >      >
>      >     
>       (out/target/product/x86/obj/SHARED_LIBRARIES/libglapi_intermediates/LINKED/libglapi.so)
>      >      >      > > > FAILED:
>      >      >
>      >     
>       out/target/product/x86/obj/SHARED_LIBRARIES/libglapi_intermediates/LINKED/libglapi.so
>      >      >      > > > ...
>      >      >      > > >
>      >      >
>      >     
>       prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/x86_64-linux-android/bin/ld:
>      >      >     warning: shared library text segment is not shareable
>      >      >      > > >
>      >      >
>      >     
>       prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/x86_64-linux-android/bin/ld:
>      >      >     error: treating warnings as errors
>      >      >      > > > clang-6.0: error: linker command failed with
>     exit code
>      >     1 (use
>      >      >     -v to see invocation)
>      >      >      > > >
>      >      >      > > > Fixes: 20294dc ("mesa: Enable asm
>     unconditionally, now
>      >     that
>      >      >     gen_matypes is gone.")
>      >      >      > > > Signed-off-by: Mauro Rossi
>     <issor.oruam at gmail.com <mailto:issor.oruam at gmail.com>
>      >     <mailto:issor.oruam at gmail.com <mailto:issor.oruam at gmail.com>>
>      >      >     <mailto:issor.oruam at gmail.com
>     <mailto:issor.oruam at gmail.com> <mailto:issor.oruam at gmail.com
>     <mailto:issor.oruam at gmail.com>>>>
>      >      >      > > > ---
>      >      >      > > > Android.common.mk <http://Android.common.mk>
>     <http://Android.common.mk>
>      >     <http://Android.common.mk>
>      >      >       | 3 +++
>      >      >      > > >  Android.mk                          | 7 +++++++
>      >      >      > > >  src/mesa/Android.libmesa_dricore.mk
>     <http://Android.libmesa_dricore.mk>
>      >     <http://Android.libmesa_dricore.mk>
>      >      >     <http://Android.libmesa_dricore.mk> | 2 ++
>      >      >      > > >  src/mesa/Android.libmesa_st_mesa.mk
>     <http://Android.libmesa_st_mesa.mk>
>      >     <http://Android.libmesa_st_mesa.mk>
>      >      >     <http://Android.libmesa_st_mesa.mk> | 2 ++
>      >      >      > > >  4 files changed, 14 insertions(+)
>      >      >      > > >
>      >      >      > > > diff --git a/Android.common.mk
>     <http://Android.common.mk>
>      >     <http://Android.common.mk> <http://Android.common.mk>
>      >      >     b/Android.common.mk <http://Android.common.mk>
>     <http://Android.common.mk>
>      >     <http://Android.common.mk>
>      >      >      > > > index 8a1c734353..209654bb75 100644
>      >      >      > > > --- a/Android.common.mk
>     <http://Android.common.mk> <http://Android.common.mk>
>      >     <http://Android.common.mk>
>      >      >      > > > +++ b/Android.common.mk
>     <http://Android.common.mk> <http://Android.common.mk>
>      >     <http://Android.common.mk>
>      >      >      > > > @@ -106,9 +106,12 @@ ifeq ($(shell test
>      >      >     $(PLATFORM_SDK_VERSION) -ge 26 && echo true),true)
>      >      >      > > >  LOCAL_CFLAGS += -DHAVE_SYS_SHM_H
>      >      >      > > >  endif
>      >      >      > > >
>      >      >      > > > +ifeq ($(strip $(MESA_ENABLE_ASM)),true)
>      >      >      > > >  ifeq ($(TARGET_ARCH),x86)
>      >      >      > > >  LOCAL_CFLAGS += \
>      >      >      > > >         -DUSE_X86_ASM
>      >      >      > > > +
>      >      >      > > > +endif
>      >      >      > > >  endif
>      >      >      > > >  ifeq ($(ARCH_ARM_HAVE_NEON),true)
>      >      >      > > >  LOCAL_CFLAGS_arm += -DUSE_ARM_ASM
>      >      >      > > > diff --git a/Android.mk b/Android.mk
>      >      >      > > > index 57613eccfc..4a2a003ea3 100644
>      >      >      > > > --- a/Android.mk
>      >      >      > > > +++ b/Android.mk
>      >      >      > > > @@ -83,6 +83,13 @@ endif
>      >      >      > > >
>      >      >      > > >  $(foreach d, $(MESA_BUILD_CLASSIC)
>     $(MESA_BUILD_GALLIUM),
>      >      >     $(eval $(d) := true))
>      >      >      > > >
>      >      >      > > > +# host and target must be the same arch to
>     generate
>      >     matypes.h
>      >      >      > > > +ifeq ($(TARGET_ARCH),$(HOST_ARCH))
>      >      >      > > > +MESA_ENABLE_ASM := true
>      >      >      > > > +else
>      >      >      > > > +MESA_ENABLE_ASM := false
>      >      >      > > > +endif
>      >      >      > > > +
>      >      >      > > >  ifneq ($(filter true, $(HAVE_GALLIUM_RADEONSI)),)
>      >      >      > > >  MESA_ENABLE_LLVM := true
>      >      >      > > >  endif
>      >      >      > > > diff --git
>     a/src/mesa/Android.libmesa_dricore.mk
>     <http://Android.libmesa_dricore.mk>
>      >     <http://Android.libmesa_dricore.mk>
>      >      >     <http://Android.libmesa_dricore.mk>
>      >      >     b/src/mesa/Android.libmesa_dricore.mk
>     <http://Android.libmesa_dricore.mk>
>      >     <http://Android.libmesa_dricore.mk>
>      >      >     <http://Android.libmesa_dricore.mk>
>      >      >      > > > index 8eb6aabe83..792117767b 100644
>      >      >      > > > --- a/src/mesa/Android.libmesa_dricore.mk
>     <http://Android.libmesa_dricore.mk>
>      >     <http://Android.libmesa_dricore.mk>
>      >      >     <http://Android.libmesa_dricore.mk>
>      >      >      > > > +++ b/src/mesa/Android.libmesa_dricore.mk
>     <http://Android.libmesa_dricore.mk>
>      >     <http://Android.libmesa_dricore.mk>
>      >      >     <http://Android.libmesa_dricore.mk>
>      >      >      > > > @@ -39,9 +39,11 @@ LOCAL_MODULE_CLASS :=
>     STATIC_LIBRARIES
>      >      >      > > >  LOCAL_SRC_FILES := \
>      >      >      > > >         $(MESA_FILES)
>      >      >      > > >
>      >      >      > > > +ifeq ($(strip $(MESA_ENABLE_ASM)),true)
>      >      >      > > >  ifeq ($(TARGET_ARCH),x86)
>      >      >      > > >         LOCAL_SRC_FILES += $(X86_FILES)
>      >      >      > > >  endif # x86
>      >      >      > > > +endif # MESA_ENABLE_ASM
>      >      >      > > >
>      >      >      > > >  ifeq ($(ARCH_X86_HAVE_SSE4_1),true)
>      >      >      > > >  LOCAL_WHOLE_STATIC_LIBRARIES := \
>      >      >      > > > diff --git
>     a/src/mesa/Android.libmesa_st_mesa.mk
>     <http://Android.libmesa_st_mesa.mk>
>      >     <http://Android.libmesa_st_mesa.mk>
>      >      >     <http://Android.libmesa_st_mesa.mk>
>      >      >     b/src/mesa/Android.libmesa_st_mesa.mk
>     <http://Android.libmesa_st_mesa.mk>
>      >     <http://Android.libmesa_st_mesa.mk>
>      >      >     <http://Android.libmesa_st_mesa.mk>
>      >      >      > > > index 16153a3c5b..ddfd03059c 100644
>      >      >      > > > --- a/src/mesa/Android.libmesa_st_mesa.mk
>     <http://Android.libmesa_st_mesa.mk>
>      >     <http://Android.libmesa_st_mesa.mk>
>      >      >     <http://Android.libmesa_st_mesa.mk>
>      >      >      > > > +++ b/src/mesa/Android.libmesa_st_mesa.mk
>     <http://Android.libmesa_st_mesa.mk>
>      >     <http://Android.libmesa_st_mesa.mk>
>      >      >     <http://Android.libmesa_st_mesa.mk>
>      >      >      > > > @@ -42,9 +42,11 @@ LOCAL_GENERATED_SOURCES := \
>      >      >      > > >         $(MESA_GEN_GLSL_H) \
>      >      >      > > >         $(MESA_GEN_NIR_H)
>      >      >      > > >
>      >      >      > > > +ifeq ($(strip $(MESA_ENABLE_ASM)),true)
>      >      >      > > >  ifeq ($(TARGET_ARCH),x86)
>      >      >      > > >         LOCAL_SRC_FILES += $(X86_FILES)
>      >      >      > > >  endif # x86
>      >      >      > > > +endif # MESA_ENABLE_ASM
>      >      >      > > >
>      >      >      > > >  ifeq ($(ARCH_X86_HAVE_SSE4_1),true)
>      >      >      > > >  LOCAL_WHOLE_STATIC_LIBRARIES := \
>      >      >      > > > --
>      >      >      > >
>      >      >      > > Looks good to me.
>      >      >      > >
>      >      >      > > Review-by: Chih-Wei Huang <cwhuang at linux.org.tw
>     <mailto:cwhuang at linux.org.tw>
>      >     <mailto:cwhuang at linux.org.tw <mailto:cwhuang at linux.org.tw>>
>      >      >     <mailto:cwhuang at linux.org.tw
>     <mailto:cwhuang at linux.org.tw> <mailto:cwhuang at linux.org.tw
>     <mailto:cwhuang at linux.org.tw>>>>
>      >      >      >
>      >      >      > Added Tapani who should one of the users of 32bit mesa,
>      >      >      > please provide feedback to proceed.
>      >      >      > Mauro
>      >      >
>      >      >     Tapani added now
>      >      >     M.
>      >      >
>      >      >
>      >      > did you had the chance to have a look
>      >      > and provide Reviewed-by ?
>      >      >
>      >
>      >     Sorry I've managed to miss this one. I'm not hitting any
>     problems after
>      >     mentioned changes though. Does this happen only if you
>     compile on a
>      >     32bit machine? I'm compiling both 64bit and 32bit but on a 64bit
>      >     machine.
>      >
>      >
>      >
>      >     // Tapani
>      >
>      >
>      > It happens when compiling on a 64 bit build machine,
>      > the assembler parts of mesa have text relocation when mesa libglapi
>      > 32bit target is compiled.
>      >
>      > How do you avoid the linker error?
> 
>     I'm not getting any linker error. Today I've compiled and tested both
>     i965 and iris with some patches rebased on top of commit b594796f1b8.
> 
>     Does this happen with a particular version of Android?
> 
>     // Tapani
> 
> 
> It happens with oreo-x86 (Android 8.1) and pie-x86 (Android 9),
> but we histocally know since Lollipop that building mesa
> with asm optimization induces text relocations in libglapi shared library
> and the specific problem affects 32bit builds
> 
> Here is the build log where '--warn-shared-textrel' is visible for 
> target libglapi.so,
> please Tapani could you provide the corresponding section of your build log?
> (There may be clues about the reason you are not getting the error)

I've made a celadon P build today and put the build log here:

http://tpalli.kapsi.fi/build_log.tgz

This is not complete image but builds the mesa parts, you can see that 
libglapi is being built both for 32bit and 64bit in the log.


> [  1% 5/326] target SharedLib: libglapi 
> (out/target/product/x86/obj/SHARED_LIBRARIES/libglapi_intermediates/LINKED/libglapi.so)
> FAILED: 
> out/target/product/x86/obj/SHARED_LIBRARIES/libglapi_intermediates/LINKED/libglapi.so 
> 
> /bin/bash -c "prebuilts/clang/host/linux-x86/clang-4691093/bin/clang++ 
> -nostdlib -Wl,-soname,libglapi.so -Wl,--gc-sections -shared 
> out/target/product/x86/obj/lib/crtbegin_so.o 
> out/target/product/x86/obj/SHARED_LIBRARIES/libglapi_intermediates/entry.o 
> out/target/product/x86/obj/SHARED_LIBRARIES/libglapi_intermediates/mapi_glapi.o 
> out/target/product/x86/obj/SHARED_LIBRARIES/libglapi_intermediates/stub.o out/target/product/x86/obj/SHARED_LIBRARIES/libglapi_intermediates/table.o 
> out/target/product/x86/obj/SHARED_LIBRARIES/libglapi_intermediates/u_current.o 
> out/target/product/x86/obj/SHARED_LIBRARIES/libglapi_intermediates/u_execmem.o 
> -Wl,--whole-archive  -Wl,--no-whole-archive   
> out/target/product/x86/obj/STATIC_LIBRARIES/libclang_rt.ubsan_minimal-i686-android_intermediates/libclang_rt.ubsan_minimal-i686-android.a 
>   out/target/product/x86/obj/STATIC_LIBRARIES/libcompiler_rt-extras_intermediates/libcompiler_rt-extras.a   out/target/product/x86/obj/STATIC_LIBRARIES/libatomic_intermediates/libatomic.a out/target/product/x86/obj/STATIC_LIBRARIES/libgcc_intermediates/libgcc.a -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--build-id=md5 -Wl,*--warn-shared-textrel *-Wl,--fatal-warnings -Wl,--no-undefined-version -Wl,--hash-style=gnu -m32  -target i686-linux-android -Bprebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/x86_64-linux-android/bin -Wl,--exclude-libs,libclang_rt.ubsan_minimal-i686-android.a -Wl,--no-undefined out/target/product/x86/obj/lib/libdrm.so out/target/product/x86/obj/lib/libc++.so out/target/product/x86/obj/lib/libc.so out/target/product/x86/obj/lib/libm.so out/target/product/x86/obj/lib/libdl.so -o out/target/product/x86/obj/SHARED_LIBRARIES/libglapi_intermediates/LINKED/libglapi.so out/target/product/x86/obj/lib/crtend_so.o"
> prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/x86_64-linux-android/bin/ld: 
> warning: shared library text segment is not shareable
> prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/x86_64-linux-android/bin/ld: 
> error: treating warnings as errors
> clang-6.0: error: linker command failed with exit code 1 (use -v to see 
> invocation)


More information about the mesa-dev mailing list