On Thu, May 13, 2021 at 1:11 PM H.J. Lu <hjl.to...@gmail.com> wrote:
>
> On Thu, May 13, 2021 at 1:01 PM H.J. Lu <hjl.to...@gmail.com> wrote:
> >
> > On Thu, May 13, 2021 at 10:27 AM Martin Liška <mli...@suse.cz> wrote:
> > >
> > > On 5/13/21 5:54 PM, H.J. Lu wrote:
> > > > On Thu, May 13, 2021 at 09:28:01AM +0200, Martin Liška wrote:
> > > >> I'm planning to do merge from master twice a year.
> > > >> This merge was tested on x86_64-linux-gnu and ppc64le-linux-gnu
> > > >> and survives regression tests.
> > > >>
> > > >> Pushed to master.
> > > >> Thanks,
> > > >> Martin
> > > >>
> > > >> Merged revision: f58e0513dd95944b81ce7a6e7b49ba656de7d75f
> > > >
> > > > On Linux/x86-64, I got
> > > >
> > > > ../../../../../src-master/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp:
> > > >  In function ??void __sanitizer::InitTlsSize()??:
> > > > ../../../../../src-master/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp:209:55:
> > > >  error: invalid conversion from ??__sanitizer::uptr*?? {aka ??long 
> > > > unsigned int*??} to ??size_t*?? {aka ??unsigned int*??} [-fpermissive]
> > > >    209 |   ((void (*)(size_t *, size_t 
> > > > *))get_tls_static_info)(&g_tls_size, &tls_align);
> > > >        |                                                       
> > > > ^~~~~~~~~~~
> > > >        |                                                       |
> > > >        |                                                       
> > > > __sanitizer::uptr* {aka long unsigned int*}
> > > >
> > > >
> > > > H.J.
> > > >
> > >
> > > Hm, I can't reproduce it:
> > >
> > > /dev/shm/objdir/./gcc/xgcc -shared-libgcc -B/dev/shm/objdir/./gcc 
> > > -nostdinc++ -L/dev/shm/objdir/x86_64-pc-linux-gnu/libstdc++-v3/src 
> > > -L/dev/shm/objdir/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs 
> > > -L/dev/shm/objdir/x86_64-pc-linux-gnu/libstdc++-v3/libsupc++/.libs 
> > > -B/home/marxin/bin/gcc/x86_64-pc-linux-gnu/bin/ 
> > > -B/home/marxin/bin/gcc/x86_64-pc-linux-gnu/lib/ -isystem 
> > > /home/marxin/bin/gcc/x86_64-pc-linux-gnu/include -isystem 
> > > /home/marxin/bin/gcc/x86_64-pc-linux-gnu/sys-include -D_GNU_SOURCE 
> > > -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS 
> > > -D__STDC_LIMIT_MACROS -DHAVE_RPC_XDR_H=0 -DHAVE_TIRPC_RPC_XDR_H=0 -I. 
> > > -I/home/marxin/Programming/gcc/libsanitizer/sanitizer_common -I.. -I 
> > > /home/marxin/Programming/gcc/libsanitizer/include -I 
> > > /home/marxin/Programming/gcc/libsanitizer -isystem 
> > > /home/marxin/Programming/gcc/libsanitizer/include/system -Wall -W 
> > > -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long -fPIC 
> > > -fno-builtin -fno-exceptions -fno-rtti -fomit-frame-pointer 
> > > -funwind-tables -fvisibility=hidden -Wno-variadic-macros 
> > > -I../../libstdc++-v3/include 
> > > -I../../libstdc++-v3/include/x86_64-pc-linux-gnu 
> > > -I/home/marxin/Programming/gcc/libsanitizer/../libstdc++-v3/libsupc++ 
> > > -std=gnu++14 -fcf-protection -mshstk -DSANITIZER_LIBBACKTRACE 
> > > -DSANITIZER_CP_DEMANGLE -I 
> > > /home/marxin/Programming/gcc/libsanitizer/../libbacktrace -I 
> > > ../libbacktrace -I /home/marxin/Programming/gcc/libsanitizer/../include 
> > > -include 
> > > /home/marxin/Programming/gcc/libsanitizer/libbacktrace/backtrace-rename.h 
> > > -g -O2 -D_GNU_SOURCE -MT sanitizer_linux_libcdep.lo -MD -MP -MF 
> > > .deps/sanitizer_linux_libcdep.Tpo -c 
> > > /home/marxin/Programming/gcc/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
> > >   -fPIC -DPIC -o .libs/sanitizer_linux_libcdep.o
> > >
> > > Can you please show full command line? And please attach a pre-processed 
> > > source file.
> > > Thanks,
> > > Martin
> >
> > The problem is -mx32 where size_t == unsigned int, not unsigned long int.
> >
>
> I am testing this patch:
>
> diff --git a/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
> b/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
> index da19d3d2ceb..4f9577a97e2 100644
> --- a/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
> +++ b/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
> @@ -197,7 +197,7 @@ __attribute__((unused)) static bool
> GetLibcVersion(int *major, int *minor,
>  __attribute__((unused)) static int g_use_dlpi_tls_data;
>
>  #if SANITIZER_GLIBC && !SANITIZER_GO
> -__attribute__((unused)) static uptr g_tls_size;
> +__attribute__((unused)) static size_t g_tls_size;
>  void InitTlsSize() {
>    int major, minor, patch;
>    g_use_dlpi_tls_data =

This is what I checked in.

-- 
H.J.
From f3b1516d9dfd969d7cc1ca6f26dec13478a1c458 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.to...@gmail.com>
Date: Thu, 13 May 2021 18:23:55 -0700
Subject: [PATCH] libsanitizer: cherry-pick from upstream

cherry-pick:

72797dedb720 [sanitizer] Use size_t on g_tls_size to fix build on x32
---
 libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp b/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
index da19d3d2ceb..4f9577a97e2 100644
--- a/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
+++ b/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
@@ -197,7 +197,7 @@ __attribute__((unused)) static bool GetLibcVersion(int *major, int *minor,
 __attribute__((unused)) static int g_use_dlpi_tls_data;
 
 #if SANITIZER_GLIBC && !SANITIZER_GO
-__attribute__((unused)) static uptr g_tls_size;
+__attribute__((unused)) static size_t g_tls_size;
 void InitTlsSize() {
   int major, minor, patch;
   g_use_dlpi_tls_data =
-- 
2.31.1

Reply via email to